如果我有几个级别的对象包含(一个对象定义和实例化另一个对象,它定义和实例化另一个对象..),是否有可能获取访问上层,包含 - 对象变量和函数,请问?从包含的对象访问包含对象的成员
实施例:
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我需要访问nVariableOne在CObjectOne。我想如下做到这一点:
int nValue = vObjectThree[index].GetObjectTwo()->GetObjectOne()->nVariable1;
然而,编译和运行我的应用程序后,我得到内存访问冲突错误。
- 上面的代码有什么问题(这是例子,可能包含拼写错误)?
- 是否必须动态创建对象而不是静态?
- 是否有任何其他方式如何实现变量存储在包含对象从包含对象?
您的代码不正确。所有类的所有成员都是私有的,所以这不会被编译。另外,你的类定义必须用分号结束。请张贴正确的,重现错误的工作代码。 – 2011-03-08 07:18:52
@ Space_C0wb0Y:嗨,感谢您的评论。我会骗我的原始代码,但是,我已经分发了几个类文件。为了显示我的代码,我将不得不添加大量文本。我基本上对原理感兴趣,如果通过**引用包含对象,即使对象是静态创建的,这个**也应该可以工作。 – 2011-03-08 07:23:11
如果你想要一个很好的答案,你将不得不在这个问题上做一些工作。这可能包括编写一个实际编译和复制错误的小示例应用程序。如果没有看到引起错误的实际代码,很难找到错误的原因。 – 2011-03-08 07:29:36