对于一个项目,我必须编写一个容器类和元素,其中元素需要了解它们所在的容器。此外,创建应该由容器中的工厂方法完成因为如果您使用标题和一个 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;
};
myContainer 类需要有关 myElement 的知识,这就是为什么 myElement 必须在 myContainer 之前,而 myElement 需要有关 myContainer 的知识。