함수를 통해 상수 클래스를 전달하는 데 문제가 있습니다.이 인수로 const CName을 전달하면 한정자가 삭제됩니다.
컴파일러가 nameTwo.WriteFullName()을 호출하면 바로 한정자를 포기하는 오류가 발생합니다. 클래스가 상수라는 것을 알고 있지만 어떻게 처리해야하는지 알 수 없습니다.
main.cpp:(.text+0x51): undefined reference to `CName::CName()'
main.cpp:(.text+0x7c): undefined reference to `CName::WriteFullName(std::basic_ostream<char, std::char_traits<char> >&) const'
main.cpp:(.text+0xbb): undefined reference to `CName::WriteFullName(std::basic_ostream<char, std::char_traits<char> >&) const'
main.cpp:(.text+0xf7): undefined reference to `CName::WriteFullName(std::basic_ostream<char, std::char_traits<char> >&) const'
main.cpp:(.text+0x133): undefined reference to `operator>>(std::basic_istream<char, std::char_traits<char> >&, CName&)'
main.cpp:(.text+0x157): undefined reference to `operator<<(std::basic_ostream<char, std::char_traits<char> >&, CName const&)'
main.cpp:(.text+0x1f4): undefined reference to `operator<<(std::basic_ostream<char, std::char_traits<char> >&, CName const&)'
main.cpp:(.text+0x22b): undefined reference to `operator<<(std::basic_ostream<char, std::char_traits<char> >&, CName const&)'
main.cpp:(.text+0x25f): undefined reference to `operator<<(std::basic_ostream<char, std::char_traits<char> >&, CName const&)'
main.cpp:(.text+0x320): undefined reference to `operator<<(std::basic_ostream<char, std::char_traits<char> >&, CName const&)'
main.cpp:(.text+0x347): undefined reference to `operator>>(std::basic_istream<char, std::char_traits<char> >&, CName&)'
작고 관련없는 팁 : 당신이하는 것처럼'자동'을 사용하지 마십시오. 예전의 C++ 03 표준에서는 실제로 아무 것도하지 않으며 새로운 C++ 11 표준에서는 변수의 유 형을 추론하는 데 사용됩니다. –
아, 덕분에, 그 옛날 습관이 내 선생님을 우리에게 주입 시켰습니다. 자동은 프로그램의 끝에 자동으로 작성하고 삭제하는 데 사용됩니까? –
함수'const'를 만들기 위해서는 AFTER 함수 이름과 시그너처를 제공해야합니다 :'void WriteFullName (ostream & outstream = cout) const {/ * your code * /}' – Rost