설명하기 앞써 우선
--- Util.h ---
struct AnimationData {
vector<int> data
}
static unordered_map<string, AnimationData*> _GLOBAL_ANIMATION_DATA_
--- A.h ---
#include "Util.h"
// _GLOBAL_ANIMATION_DATA_에 값 채워넣기
_GLOBAL_ANIMATION_DATA_["Data1"] = animData1;
_GLOBAL_ANIMATION_DATA_["Data2"] = animData2;
....
--- B.h ---
#include "Util.h"
// _GLOBAL_ANIMATION_DATA_에 쌓인 값 읽기
// 예외! NULL 참조!
AnimationData* data = _GLOBAL_ANIMATION_DATA_["Data1"];
이런식으로 코드를 짰는데,
분명 A.h에서 값을 채워 넣었는데 B.h에선 _GLOBAL_ANIMATION_DATA_에 값이 하나도 채워지지 않는다는게 문제임.
Q1> static 정적 변수는 데이터 영역에 생성되는데, static으로 선언된 구조체의 vector 래핑의 (void*)data는 힙영역에 생성되는거냐 아니면 어디에 생성되는 거냐?
Q2> 위 문제는 왜 일어나는거냐? 키워드라도 알려줘
해결법까지 바라지도 않는다. 키워드라도 알려줘
헤더파일에서 데이터를 왜 집어넣음?
코드를 개같이 짜긴 했어 ㅇㅇ
exterm 쓰는게 정석임 헤더파일은 컨스트만 쓰고 패턴으로 빠지면 싱글턴 쓰먄됨
https://gall.dcinside.com/mgallery/board/view/?id=github&no=46388
빌드되는 과정 자체를 잘 모르는것 같아 보이는데... "B.h"를 어디서 포함하긴 하는거냐