강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

움직이는YM님의 프로필 이미지
움직이는YM

작성한 질문수

홍정모의 따라하며 배우는 C++

10.3 집합관계 질문있습니다.

작성

·

159

0

cout << lec1 << endl;

cout << lec2 << endl;

lec2.study();

cout << lec1 << endl;

cout << lec2 << endl;

집합관계로 넘기기 전에 구성관계로만 코드를 작성한 후 코드 실행이 되지 않습니다

위의 cout에 빨간 밑줄이 그어지면서 error C2280: 'std::basic_ostream<char,std::char_traits<char>>::basic_ostream(const std::basic_ostream<char,std::char_traits<char>> &)': 삭제된 함수를 참조하려고 합니다.

std::basic_ostream<char,std::char_traits<char>>::basic_ostream' 선언을 참조하십시오.

std::basic_ostream<char,std::char_traits<char>>::basic_ostream(const std::basic_ostream<char,std::char_traits<char>> &)': 함수가 명시적으로 삭제되었습니다.

cout이 삭제된 함수를 출력한다는게 문제인 것 같습니다. 

lec1.registerStudent(Student("Dash", 1) ); 메인에서 이런식으로 익명객체를 넘기는게 문제인거 같기도하고(익명객체는 다음줄에서 바로 없어진다고 하셨으니까 그 생각을 해봤습니다)

생각해 볼 수 있는 문제가 뭐가 있을까요? 어디가 삭제되었다는 건지 어떻게 찾아야 할지 모르겠습니다.

답변 2

1

안녕하세요?
cout의 경우에 copy 를 허용하지 않기위해 copy constructor가 delete되어 있긴합니다만...이 문제라면 아마 reference를 넘겨주는 것이 아닌 복사를 하도록 어딘가에서 실수를 하신 게 아닌가 생각되네요.
그런데.. 이런 문제는 전체 코드를 올려시지 않으면 안타깝게도 저는 추측 밖에 할 수가 없습니다.
다음부터는 코드와 함께 올려주세요. 강의의 어느 부분인지도 표시해주시면 제게 도움이 됩니다.

0

질문이 미숙했습니다 답변 감사합니다

움직이는YM님의 프로필 이미지
움직이는YM

작성한 질문수

질문하기