클래스를 정의하려는 네임 스페이스가 있습니다. 클래스는 다소 복잡하기 때문에 별도의 헤더 파일에 정의하고 싶지만 가장 간단한 코드조차도 나에게 "정의되지 않은 참조"오류를줍니다.네임 스페이스 내에서 별도의 헤더에 정의 된 클래스를 사용하는 방법
MAIN.CPP
#include <iostream>
namespace A {
#include "C.hpp"
}
int main()
{
A::C foo;
std::cout << foo.member << std::endl;
return 0;
}
C.hpp
class C {
public:
C();
int member;
}
C.cpp
C::C()
{
this->member = 10;
}
내가 g++ C.cpp main.cpp
를 실행하면 내가 얻을 "MAIN.CPP :(. 텍스트 + 0x10을) :`A :: C :: C() '에 대한 참조가 정의되지 않았습니다. C# :: C()라는 생성자의 정의가 어딘지 잘못되었다고 가정합니다.하지만이를 수정하는 방법은 확실하지 않습니다.
잘 정의가 잘못된 것입니다 ... –
이름 충돌이 발생하기 때문에이 작업을 수행했다고 가정합니다. 이 시점에서 간단히 말하면, "클래스를 만들 때 네임 스페이스를 무시하는 것에 대한 교훈을 얻었 으면합니다. –