휴대 전화의 정적 컬렉션에 자신을 추가하기 위해 생성 된 클래스 Phone이 필요합니다. 인스턴스의 정적 컬렉션 C++?
static vector < class Phone* > instances;
그리고 나는이 할 생성자
:Phone::instances.push_back(this);
을하지만 링커가 확인되지 않은 외부 기호를 던졌습니다, 그 이유는 그래서 컬렉션이? 내가 도대체 뭘 잘못하고있는 겁니까? 비슷한 질문을 찾지 못했습니다. 인스턴스를 생성자 외부에 추가해야합니까? 아니면 다른 클래스의 컬렉션을 가져야합니까? 고맙습니다.
덕분에 @shr, 나는 그것을 이미 얼마 전에 나 한테 일어난 생각, 왜 그? 어디서든지 주제에 대해 더 읽을 수 있습니까? 고맙습니다! –
변수는 주로 소스 파일에서 선언됩니다. 정적 멤버는 어딘가에 선언해야합니다. 헤더에 선언하면 헤더를 포함한 각 소스의 변수가 선언되고'already defined' 링크 오류가 발생합니다. 그래서 헤더 파일에 변수를 선언하지 않는 것입니다. (정적 파일이 아닌 경우 각 소스 파일마다 다른 로컬 파일과 관련이 있으며 대상과 관련이 없음) – SHR