2012-02-19 2 views

답변

2

한 가지 방법은 정적 구성원 데이터 정적 멤버 함수를 대체하는 것입니다.

class A 
{ 
    static B static_b; //static member data 
}; 

//.cpp 
B A::static_b; //definition (required) 

그래서 그 대신 그 당신은 귀하의 클래스를 정의 할 수 있습니다 : 그것은-스레드로부터 안전하지 않습니다,하지만 당신이 그것을 만들 수

class A 
{ 
    static B static_b() //static member function! 
    { 
     static B b; 
     return b; 
    } 
}; 

는이 클래스를했습니다 말 스레드로부터 안전합니다.

+0

main()의 끝에서 객체 b가 자동으로 파괴되므로 특별히 괜찮은 것처럼 보입니다. 그것은 싱글 톤과 매우 흡사하지 않습니까? – Belloc

+0

@ user1042389 : * 정적 * 함수를 호출하여 사용하려는 데이터에 액세스하는 방식으로 * 싱글 톤과 비슷합니다. 그러나 클래스 A 자체는 싱글 톤이 아닙니다. – Nawaz

0

이 개체에 대한 포인터를 사용할 수 있습니다 : 그 작업을 수행하는

class SomeClass{ 
public: 
    static SomeOtherClass* p; 
}; 

SomeOtherClass* SomeClass::p;  

void main(){ 
    SomeClass::p = new SomeOtherClass(); 
} 
+0

하지만이 할당은 수동으로 삭제해야합니다. 나는 이것을 피하고 싶다. – Belloc

관련 문제