Element가 있고 Element는 SaveToFile / LoadFromFile 이 있어
Element를 상속받는 LineElement, TextBoxElement 등이 있고...
SaveToFile은 그냥 막 저장하면 되는데,
LoadFromFile은 팩토리에서 타입체크해서 객체 생성하게 하면
추상화된 레벨에서 Load가 가능하지.
그런데 TextBoxElement의 경우 외부에서 모든 Element가 아닌 TextBoxElement에서만 사용되는
객체의 포인터를 가지고 있어야함. 그래서 LoadFromFile시 TextBoxElement인 경우 형변환 해서 해당 데이터를 집어넣어주면
이건 또 추상화 방식에서 벗어나지 않나여..
뭐 방법이 없는지..
뭔 말인지 이해하느라 한참 걸렸다
추상화를 생각하기 전에, 전체적인 구조에 대해서 생각을 해볼 필요가 있어보인다
너가 아래에 적은 \"c++ 난감한 상황\" <- 이 글을 읽어보면서 느낀 것도, c++을 쓰면서 먼가 자바 스럽다느니 A-B 관계라느니 하는 말을 하면서, 정작 구조 자체는 상호참조를 한다는 것도 좀 아이러니 했다
Element - ElementController - ElementMgr 구조에서 생성 삭제를 ElementController 가 한다면, 접근을 할 때에도 ElementController 를 통해서 해야지, ElementMgr 가 Element 를 바로 접근 한 뒤, 그 포인터를 들고 있다거나 하면 제대로 된 OOP가 아니야
예를들어 ElementMgr에서 Element를 쓸 때에는 ElementController에 있는 ErrType ElementController::GetElement( OUT Element& element, size_t index ) <- 이런 함수를 이용해서 얻어와 접근해야지, Element의 포인터를 들고 있으면 안된다는 말임
흠 전체적인 구조를 잡기가 쉽지가 않네여;;;