对于项目,我必须编写一个容器类和元素,其中元素需要有关它们所在容器的知识。另外,创建也应通过容器中的工厂方法来完成,因为如果使用 header 和一个cpp文件,如果您(像我一样)只允许使用一个 header ,对我来说似乎是不可能的。这是问题的示例:

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的知识。

最佳答案

您必须将类定义和方法定义分成至少一个类的单独部分。

例如,首先定义myContainer类(即该类及其变量/函数,而不是那些函数的实现)。然后有myElement类。接下来是myContainer成员函数的实际实现(如果希望在头文件中将其标记为inline)。

10-07 19:30