헤더의 다른 클래스 인 정적 멤버로 클래스를 선언 할 때 문제가 있습니까? 예 :정적 클래스 멤버로 선언 된 C++ 클래스
class Stat
{
public:
int avar;
Stat();
};
class Test
{
public:
static Stat stat;
};
문제가 발생할 수있는 이유는 헤더에 전역 변수를 선언하는 것과 매우 유사하게 보입니다. 두 개의 cpp 파일에 포함 된 경우 두 파일에서 global이 선언되어 오류가 발생합니다.
위의 예제에서 'stat'는 여전히 전역과 동일한 두 개의 cpp 파일간에 한 번만 만들어야합니다. 따라서 컴파일러는 한 상황을 처리 할 수 있지만 다른 상황은 처리하지 못하거나 대답 할 수 없습니까?
Stat Test::stat;
그래서 어떤 컴파일러 나 링커 오류가 없습니다 :
이들은 __CLASS 정의입니다, declarations__ 없습니다. 'Test :: stat', howver는 __member 선언 __ 일 뿐이며 여전히 정의가 필요합니다. ([이 답변] (http://stackoverflow.com/questions/1410563/what-is-the-difference-between-a-definition-and-a-declaration/1410632#1410632)에 대한 선언과 정의는 무엇입니까? C++.) – sbi