对于一个项目,我必须编写一个容器类和元素,其中元素需要有关它们所在容器的知识.另外,创建应该由容器中的工厂方法完成.如果你使用标题和一个cpp文件,如果你(像我一样)只允许使用一个标题,我似乎不可能.以下是问题的示例:
class myContainer;
class myElement;
class myContainer
{
public:
myElement *createElement()
{
myElement *me =new myElement(this);
// do some adding to list stuff
return me;
}
int askMyContainer()
{
return 42;
}
};
class myElement
{
public:
myElement(myContainer *parent)
{
pcontainer=parent;
}
int userAskingSomething()
{
return pcontainer->askMyContainer();
}
protected:
myContainer *pcontainer;
};
Run Code Online (Sandbox Code Playgroud)
myContainer类需要关于myElement的知识,这就是为什么myElement会出现在myContainer之前,但myElement需要有关myContainer的知识.
您必须将类定义和方法定义拆分为至少一个类的单独部分.
例如,首先定义myContainer类(即类及其变量/函数,但不定义那些函数的实现).然后myElement上课.遵循这个myContainer成员函数的实际实现(inline如果你想在头文件中标记它们).