gpt4 book ai didi

c++ - header 声明 "The chicken or the egg"

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:26:45 25 4
gpt4 key购买 nike

对于一个项目,我必须编写一个容器类和元素,其中元素需要了解它们所在的容器。此外,创建应该由容器中的工厂方法完成因为如果你使用这很容易一个头文件和一个 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 的知识。

最佳答案

对于至少一个类,您必须将类定义和方法定义拆分为单独的部分。

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

关于c++ - header 声明 "The chicken or the egg",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19632035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com