2012-08-22 2 views
0

여기는 문맥입니다 :클래스의 정적 전용 객체를 어떻게 참조 할 수 있습니까?

A는 'Hi'라고 대답해야하지만 A는 음성을 알지 못하기 때문에 B 클래스의 객체를 사용하여 음성을 말합니다 .A 그것을 위해 B 연설에 B입니다 잡고, A는 각각의 필요가 없습니다은 자신의 B 객체의 개최,이 때문에 나는이에 대한 고유의 정적 개인 B를 사용하기로 선택이 같이

:

class A { 
    static B b; 
public: 
    void sayHi(); 
}; 

void A::sayHi() 
{ 
    b.sayHi(); 
} 
.

그리고 B는 다음과 같이 진행됩니다.

내가 g의 ++ 컴파일러이 코드를 컴파일 할 때 (210)

문제는

int main() { 
    A a; 
    a.sayHi(); 
    return 0; 
} 

은 내가 "정의되지 않은 참조"오류가 ...입니다. 왜 이것이 작동하지 않는 지 모르겠다. 컴파일러가 A에서 비 정적 B를 가리키고 있다고 생각하고 있는지 궁금해했다.하지만 어떻게해야할지 모르겠다. 내 코드에서

P.S은 :, B의 선언은 A.

당신은 실제로 당신의 코드 어딘가에 정적 객체를 생성 할 필요가
+0

많은 속임수가 있습니다. 멤버를 정의해야합니다. – chris

답변

7

의 선언 앞에 온다. 당신이 한 모든 것은 클래스가 가지고 있다고 말합니다. .cpp 파일이 추가 :

B A::b; 

이 개체가 구축 기본해야 가정합니다.

관련 문제