성장 신호가 생겼다.
클래스 A 안에 클래스 B 변수를 만들어서, 이를 모든 클래스 A가 공유하는 변수로 만들어주고 싶었다.
당연히 static이 들어가야 할 것이고,
초기화는 이런 식으로 했다.
A.h
class A
{
public:
A();
virtual ~A();
...
protected:
static B* b;
...
};
#include "A.h"
B* A::b = nullptr;
A::A()
{
...
b = new B();
}
이렇게 하면 어떤 상황이 펼쳐지나? 기껏 공유하려고 만들었던 변수 b인데, 생성할 때마다 새로운 주소를 '동적 할당' 시켜서 그 의미가 사라지게 되었다. 그럼 어떻게 하나?
#include "A.h"
B* A::b = new B();
A::A()
{
...
//b = new B();
}
코드 블럭 외부에서 동적 할당을 시켜주면 간단히 성공.