2014-11-13 5 views
1

A 클래스가 있는데 display()입니다. I 형 객체 A의 정적 변수와 구조체 B을 만듭니다 시도가 a에 액세스 할 때 구조체의 정적 객체

class A{ 
public : 
    void display() 
    { 
     cout << "in A " << endl; 
    } 
}; 
typedef struct B{ 
    static A a; 
} bb; 

//B::a.display(); 
int main() { 
    bb b; 
    bb::a.display(); 
    return 0; 
} 

가 지금은 오류가 발생합니다.

이 경우에 정적 객체를 어떻게 정의 할 수 있습니까?

+0

오류 메시지가 무엇입니까, 당신은 std'의 네임 스페이스 기호를 사용할 수'만들기 위해'using'-지시 '또는 using'-선언을 사용 했 ? – Rerito

+0

그냥 객체 A를 선언한다고 생각합니다. B :: a.display(); 'B :: a '에 대한 정의되지 않은 참조 때문에 작동하지 않습니다. –

+0

@KarolyHorvath : 어디서? –

답변

4

static A a;을 선언했지만 정의하지 않았습니다. int main() 전에 다음 줄을 추가하고 성공적으로 연결할 수 있습니다 :

A B::a; 
+0

생성자가 없으므로 'A'가 정의 되었기 때문에, 컴파일러가 자동으로 기본 생성자를 호출하여 a를 초기화하지 않겠습니까? – Rerito

+1

@Rerito : 예. 당신이 그것을 정의 할 필요가 없다는 것을 의미하지는 않습니다. –

+0

@LightnessRacesinOrbit : 'using'지시어 이외의 것을 추가하지 않고 Ideone에서 테스트되었습니다 : http://ideone.com/0LkbNE. 왜 작동 했습니까? – Rerito