オブジェクトの包含に複数のレベルがある場合(1 つのオブジェクトが、別のオブジェクトを定義およびインスタンス化する別のオブジェクトを定義およびインスタンス化する..)、オブジェクト変数および関数を含む上部にアクセスすることは可能ですか?
例:
class CObjectOne
{
public:
CObjectOne::CObjectOne() { Create(); };
void Create();
std::vector<ObjectTwo>vObejctsTwo;
int nVariableOne;
}
bool CObjectOne::Create()
{
CObjectTwo ObjectTwo(this);
vObjectsTwo.push_back(ObjectTwo);
}
class CObjectTwo
{
public:
CObjectTwo::CObjectTwo(CObjectOne* pObject)
{
pObjectOne = pObject;
Create();
};
void Create();
CObjectOne* GetObjectOne(){return pObjectOne;};
std::vector<CObjectTrhee>vObjectsTrhee;
CObjectOne* pObjectOne;
int nVariableTwo;
}
bool CObjectTwo::Create()
{
CObjectThree ObjectThree(this);
vObjectsThree.push_back(ObjectThree);
}
class CObjectThree
{
public:
CObjectThree::CObjectThree(CObjectTwo* pObject)
{
pObjectTwo = pObject;
Create();
};
void Create();
CObjectTwo* GetObjectTwo(){return pObjectTwo;};
std::vector<CObjectsFour>vObjectsFour;
CObjectTwo* pObjectTwo;
int nVariableThree;
}
bool CObjectThree::Create()
{
CObjectFour ObjectFour(this);
vObjectsFour.push_back(ObjectFour);
}
main()
{
CObjectOne myObject1;
}
CObjectThree内から、CObjectOneのnVariableOneにアクセスする必要があるとします。私は次のようにしたいと思います:
int nValue = vObjectThree[index].GetObjectTwo()->GetObjectOne()->nVariable1;
しかし、アプリケーションをコンパイルして実行すると、Memory Access Violation エラーが発生します。
- 上記のコードの何が問題になっていますか (これは例であり、スペルミスが含まれている可能性があります)。
- オブジェクトを静的ではなく動的に作成する必要がありますか?
- 含まれているオブジェクトから、含まれているオブジェクトに格納されている変数を取得する方法は他にありますか?