초기화를 위해 멤버 객체를 부모 객체에 전달하는 클래스를 만들고 싶습니다. 아래 코드는 제가하려고하는 것을 보여줍니다.클래스의 멤버 객체를 기본 클래스의 생성자에 전달하는 방법은 무엇입니까?
class TQueueViewerForm1 : public TQueueViewerForm
{
private: // User declarations
DOMMsgCollectionEditorImpl m_collection;
public: // User declarations
__fastcall TQueueViewerForm1(TComponent* Owner);
};
__fastcall TQueueViewerForm1::TQueueViewerForm1(TComponent* Owner)
: TQueueViewerForm(Owner, m_collection)
{
}
그러나 이것은 작동하지 않습니다. m_collection이 초기화되기 전에 TQueueViewerForm()이 호출되고있는 것처럼 보입니다. TQueueViewerForm()이 초기화되지 않은 객체를 사용하려고하기 때문에 프로그램이 충돌합니다.
여기 내 선택은 무엇입니까? 이상적으로 부모 클래스가 어떻게 든 초기화되기 전에 m_collection을 초기화하고 싶습니다.
오 와우. 이것은 문제를 해결할 것이지만 나는 그런 종류의 코드를 작성한 자신을 용서할 수 있다고 생각하지 않는다 ... – QuestionC
동의. 이는 코드 기반에 익숙하지 않은 새로운 사람에게 지나치게 복잡해 보이고 유지 보수 노력의 가치가없는 것으로 보입니다. 문제를 다시 생각하고 다른 접근 방식을 시도하는 것이 가장 좋습니다. – jia103