월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨홍정모의 따라하며 배우는 C++
코드블럭스 빌드 오류창
안녕하세요! 질문이 있어 글 올립니다. 코드를 작성한 후 빌드를 하고, run을 눌렀습니다. 그랬더니 첨부한 사진처럼 빌드가 되지 않았다는 창이 뜹니다. 저기서 (예)를 누르면 계속 저 창이 반복됩니다ㅠㅠ 어떻게 컴파일할 수 있나요??
- 미해결홍정모의 따라하며 배우는 C++
배열 질문드립니다.
안녕하세요 궁금한 점이 있어서 질문 드립니다. #include <iostream> using namespace std; int main() { char myString[255]; cin >> myString; cout << myString << endl; return 0; } 이렇게 myString에 jackjack을 입력하고 출력했을 때, 나머지 배열에 들어있는 가비지값들이 출력되지 않는게 '\0'을 만났기 때문인가요 아니면 가비지값들이 들어있지 않기 때문인가요?
- 미해결홍정모의 따라하며 배우는 C++
VS Code 에서 실습을 진행하고 있는데 strcpy_s 에 관한 질문입니다!
강의 13-6을 들으면서 strcpy_s 를 넣는 중 현재 scope에서 정의가 되어있지 않다고 되어 있습니다. cstring, string.h 등등 여러 헤더들 다 넣어봤는데 컴파일이 되지 않네요. (대신 IDE에서는 밑줄이 없습니다) 찾아보니 이게 VC 독자규격? 이라는 이야기가 있는데 VS Code에서는 실습할 수 없다는 걸까요?
- 미해결홍정모의 따라하며 배우는 C++
&로 데이터의 주소를 표현할 때
데이터가 들어있는 첫번째 주소를 표현한다고 해주셨는데, 첫번째 bit를 표현하는 건가요 아니면 첫번째 byte를 표현하는 건가요?
- 미해결홍정모의 따라하며 배우는 C++
13분 25초 10~11번째 줄에 return type이 string& 인 이유는 무엇인가요?
궁금합니다!
- 미해결홍정모의 따라하며 배우는 C++
7.5강 2:15부에 array의 내용이 매번 복사가 된다면이라는 말씀을 하시는데.
7.5강 2:15부에 함수의 반환에 있어서 array의 내용이 매번 복사가 된다면이라는 말씀을 하시는데 c계열 언어에서는 단순히 array의 주소값만 이용해서 다뤄지기 때문에 array 데이터의 전체적인 복사가 일어나지 않는다고 모 커뮤니티 사이트에서 봤습니다. 혹시 함수의 반환 같은 경우 뿐만 아니라 array의 전체적인 복사가 일어나는 부분이 있다면 알려주실 수 있을실까요? 감사합니다.
- 해결됨홍정모의 따라하며 배우는 C++
메모리 할당 해제 이후의 배열 원소 접근 문제
#include <iostream> using namespace std; int main() { const int row = 3; const int col = 5; // 복사할 2차원 배열 const int s2da[row][col] = { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15} }; // twoDimArr의 row 배열을 가리킬 포인터를 초기화한다. int **twoDimArr{ new int *[row] {nullptr} }; // row 배열을 할당한다. for (int r = 0; r < row; ++r) twoDimArr[r] = new int[col] { 0 }; // s2da에서 twoDimArr로 복사한다. for (int r = 0; r < row; ++r) { for (int c = 0; c < col; ++c) twoDimArr[r][c] = s2da[r][c]; } // row 배열(twoDimArr[0...2])을 할당 해제한다. for (int r = 0; r < row; ++r) delete[] twoDimArr[r]; // ***************************************************************** int *ptr{ new int { 3 } }; delete ptr; //cout << *ptr << endl; // 오류 // row 배열 할당 해제로 인해 해당 배열의 원소를 접근할 수 없다. cout << **twoDimArr << endl; // twoDimArr[0][0] // ***************************************************************** // 2차원 배열(twoDimArr)을 할당 해제한다. delete[] twoDimArr; return 0; } (visual studio 2019에서 작성한 코드입니다.) 위 코드에서, ptr은 할당 해제 후에 접근하면 오류가 발생해 프로그램이 강제로 종료됐습니다. 그러나, twoDimArr의 row 배열들(twoDimArr[0...2])을 할당 해제하고 **twoDimArr 출력을 시도했을 때 프로그램이 종료되지 않았습니다. ptr처럼 할당을 해제하고 접근했다면, 프로그램이 비정상적인 종료를 해야하지 않나요? 게다가 intellisense에서 첫 번째 경우는 경고를 하는 반면에, 두 번째 경우는 그렇지 않네요. ps. 이렇게 사용하는 것은 올바르지 못한 것을 알지만, 생각과 다르게 실행된 이유가 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C++
함수 리턴타입을 bool 타입으로 한 특별한 이유가 있는건가요?
함수 bool 타입을 void로 바꿔도 결과는 동일한데 강의에서는 bool타입으로 하셔서요. 특별한 이유가 있는건가요? 코드 첨부하겠습니다. #include <iostream> #include <string> using namespace std; class IErrorLog { public: virtual void reportError(const char * errorMessage) = 0; virtual ~IErrorLog() {} }; class FileErrorLog : public IErrorLog { public: void reportError(const char * errorMessage) override { cout << "Writing error to a file" << endl; } }; class ConsolErrorLog : public IErrorLog { public: void reportError(const char * errorMessage) override { cout << "priting error to a Consol" << endl; } }; void doSomething(IErrorLog & log) { log.reportError("Runtime error!!"); } int main() { FileErrorLog file_log; ConsolErrorLog console_log; doSomething(file_log); doSomething(console_log); return 0; }
- 해결됨홍정모의 따라하며 배우는 C++
생성자 호출 관련 질문
#include <iostream> #include <string> #include <vector> using namespace std; class Teacher { std::string m_name; public: Teacher(const std::string& name_input = "No name") : m_name(name_input) { std::cout << "Teacher" << std::endl; } ~Teacher() {} void setName(const std::string& name_in) { m_name = name_in; } std::string getName() { return m_name; } friend std::ostream& operator<<(std::ostream& os, const Teacher& teacher) { os << teacher.m_name << std::endl; return os; } }; class Student { std::string m_name; int m_intel; public: Student(const std::string& name_in = "No name", const int& intel_in = 0) : m_name(name_in) , m_intel(intel_in) { std::cout << "Student" << std::endl; } ~Student() {} void setName(const std::string& name_in) { m_name = name_in; } void setIntel(const int& intel_in) { m_intel = intel_in; } int getIntel() { return m_intel; } friend std::ostream& operator<<(std::ostream& os, const Student& student) { os << student.m_name << " " << student.m_intel; return os; } }; class Lecture { std::string m_name; Teacher m_teacher; std::vector<Student> m_students; public: Lecture(const std::string& name_in = "No Name") : m_name(name_in) { std::cout << "Lecture" << std::endl; } ~Lecture() { //do Not delete teacher, students } void assignTeacher(const Teacher& teacher) { m_teacher = teacher; } void registerStudent(const Student& const student) { m_students.push_back(student); } void study() { std::cout << m_name << " Study " << std::endl << std::endl; for (auto& element : m_students) element.setIntel(element.getIntel() + 1); } friend std::ostream& operator<<(std::ostream& os, const Lecture& lecture) { os << "Lecture name : " << lecture.m_name << std::endl; os << lecture.m_teacher; for (auto& element : lecture.m_students) os << element << std::endl; return os; } }; int main() { using namespace std; Lecture lec1("Introduction to Computer Programming"); lec1.assignTeacher(Teacher("Prof. Hong")); lec1.registerStudent(Student("A", 1)); lec1.registerStudent(Student("B", 2)); lec1.registerStudent(Student("C", 3)); Lecture lec2("Computational Thinking"); lec2.assignTeacher(Teacher("Prof. Good")); lec2.registerStudent(Student("A", 0)); //TODO. implement Aggregation Relationship //test { cout << lec1 << endl; cout << lec2 << endl; lec2.study(); cout << lec1 << endl; cout << lec2 << endl; } } Lecture를 생성하면 Teacher도 같이 생성됩니다 그런데 Lecture 생성자 안에 Teacher와 관련된건 없을텐데 생성되니깐 궁금해서 질문합니다
- 미해결홍정모의 따라하며 배우는 C++
boost 오류났는데 갑자기 설치가 됬네요??
저도 vcpkg.exe install boost:x64-windows 이 실행코드에서 오류가 걸려 막혔는데 여기 질문란이랑 구글에 검색해도 안나오고.. 방금 이것저것 하다가 갑자기 설치가 잘되네요..?? 했던건 비주얼 스튜디오가 한글이면 막힌다길래 비주얼 스튜디어 영어팩 설치해서 바꾸고(이건 해봤지만 다른 오류가 뜨더군요) 비주얼스튜디오 2019 업데이트하고 오류에 vcpkg 업데이트랑 git pull 업데이트 애기가 있어서 https://www.sysnet.pe.kr/2/0/11779위에 사이트가서 코드 다 쳐봤는데 그러고 나니 오류없이 잘 설치 되었습니다... 아마 비주얼 스튜디오 업데이트나 위에 사이트가서코드 쳤던게 먹혔던거 같습니다..ㄷㄷ
- 미해결홍정모의 따라하며 배우는 C++
클래스 리턴값 관련 질문
안녕하세요! 연습문제 구현하다가 궁금한 점이 생겨 질문드립니다. 클래스를 리턴값으로 받는 멤버변수를 여러개 만들다보니 실수하여 &(참조)를 빼먹으니까 retunr 0;을 만나기도 전이었는데 멤버함수가 리터값을 받자마자 바로 소멸자를 호출하더라구요. &를 넣으면 문제없이 빌드됩니다. 왜 바로 소멸자를 호출하는지 이해가 안됩니다ㅠㅠ < &(참조)를 붙인 상황> IntArray& remove(const int & ix) // arr[3] { //1 10 3 5 7 9 //1 10 3 7 9 for (int a = ix; a < m_length - 1; a++) m_data[a] = m_data[a + 1]; resize(m_length - 1); return *this; } < &(참조)가 없는 상황> IntArray remove(const int & ix) // arr[3] { //1 10 3 5 7 9 //1 10 3 7 9 for (int a = ix; a < m_length - 1; a++) m_data[a] = m_data[a + 1]; resize(m_length - 1); return *this; }
- 해결됨홍정모의 따라하며 배우는 C++
6.9강을 듣다가 포인터로 실험을 해보았는데 이해가 안 가는 부분이 있어서 질문 드립니다
- 위 코드를 실행시켜 보았는데 이렇게 cout으로 원하는 출력값이 나오지만, stack around the variable a was corrupted라고 런타임 에러가 뜹니다. a가 int이니까 4바이트 크기이고, &a+1의 값이 위의 실행 결과와 같이 a의 주소와 4바이트만큼 떨어져 있으니까 아무런 문제가 없을 줄 알았는데 문제가 생겨서, 왜 문제가 생기는지 문의 드립니다.
- 해결됨홍정모의 따라하며 배우는 C++
변환생성자와 인수있는 생성자의 차이
제목 그대로 둘의 차이가 뭔가요?
- 미해결홍정모의 따라하며 배우는 C++
왜 fnc가 아니라 fcn을 네이밍으로 사용하셨나요?
사소할 수 있는 네이밍 규칙이라 생각할 수 있겠지만, fcnptr 이라는 변수를 강의중에 사용하셨는데, 개인적으로는 function의 약어이면 오히려, fnc가 더 맞는 표현이라 생각되는데 혹시 fcn이 필드에서 더 많이 쓰이는 변수 명일까요? 혹시 아시는 분들 계신다면 답변 감사하겠습니다. 항상 좋은 강의 감사드립니다. :)
- 미해결홍정모의 따라하며 배우는 C++
19.8 자료형 추론 16분 49초 강의 코드에서 컴파일 에러가 생깁니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. /Users/coding/Documents/cpp/inflearn/Chapter_19_Modern_CPP_Elements/08_Type_Inference_auto_decltype/08_Type_Inference_auto_decltype.cpp:148:16: warning: returning reference to local temporary object [-Wreturn-stack-address] return 123; ^~~ 1 warning generated. 빌드시 위와 같이 에러가 발생합니다. 환경 : M1 MacBook Air 빅서 11.6.1 강의를 다시 찾아봐도 선생님 코드와 다를게 없는데도 저 에러가 발생해서 당황스럽습니다. 어떤 부분이 잘못된건지 짚어주시면 고쳐보겠습니다.
- 해결됨홍정모의 따라하며 배우는 C++
random_device와 mt19937의 차이
random_device와 mt19937의 차이를 정확하게 잘 이해가 안되서 그런데 random_device가 srand()처럼 seed값을 바꿔주고 mt19937이 rand()처럼 난수의 값을 반환? 하는 역할을 하는건가요?
- 미해결홍정모의 따라하며 배우는 C++
typeid( ref.getThis( ) ) 호출시 getThis( ) 내부 출력함수가 작동하지 않는 이유
7분 16초부터 교수님께서 getThis( ) 함수 내부에 함수명 출력을 구현하셨습니다. type( ref.getThis() ) 호출시에도 함수 내부에 구현된 함수명 출력이 실행되어야 하는데 무시되네요. 직접 구현하여도 마찬가지입니다. #include <iostream> #include <typeinfo> using namespace std; class A { public: void NotVirtual() { cout << "A" << endl; } virtual A* getThis() { cout << __FUNCTION__ << " A is working " << endl; return this; } }; class B: public A { public: void NotVirtual() { cout << "B" << endl; } virtual B* getThis() override { cout << __FUNCTION__ << " B is working " << endl; return this; } }; int main() { B b; A& ref = b; cout << typeid(ref.getThis()).name() << endl; typeid(ref.getThis()).name(); ref.getThis(); } 출력값은 다음과 같습니다. getThis( ) 함수가 세 번 실행되었는데도 출력값은 한 번만 나옵니다. typeid 내부에서 신기한일이 일어나는거 같습니다. 뭐라고 검색해야 해당 내용을 알 수 있을지 모르겠어요! 혹시 도움을 구할 수 있나요. 왜 getThis( ) 가 typeid와 함께 사용될 때 내부 출력이 무시되는지 궁금합니다.
- 해결됨홍정모의 따라하며 배우는 C++
const에 대한 질문
const를 사용하면서 이해가 잘 안되는 부분이 있어서 질문합니다 int getValue() const { return a; } //a는 멤버변수 함수를 이렇게 만들었을때 해당 함수안의 멤버변수들은 값을 못바꾸니 함수가 끝나기 전까진 상수가 되는건가요? int& getValue() const { return a; } 이렇게 했을때 'return': cannot convert from 'const int' to 'int&' 라고 오류가 떳는데 const int라고 되어있길래 궁금해서 질문했습니다
- 미해결홍정모의 따라하며 배우는 C++
포인터
int *ptr_x = &x; int *px = &x; 이 두가지가 같은 뜻인가요? 직접 확인해봤는데 주소값이 저장하고 실행할 때마다 계속 바뀌어서 헷갈립니다ㅜㅜ 그리고 저장하고 실행할 때마다 주소값도 계속 바뀌는 건지도 궁금합니다..
- 미해결홍정모의 따라하며 배우는 C++
9:36 부분 질문 있습니다
강의 그대로 따라하다가 Storage.cpp 파일을 include하면 링킹 에러가 나서 구글링을 해봤는데 cpp 파일을 include하면 cpp파일에서 만들어진 obj파일이랑 main에서 만들어진 obj파일을 링크할때 함수 정의가 중복되어서 링킹 오류가 난다고 하던데요 근데 강의에서는 되던데 이건 visual studio나 c++ 버전 차이 때문에 그런건가요?