gpt4 book ai didi

c++ - 声明/定义顺序依赖

转载 作者:太空宇宙 更新时间:2023-11-04 16:27:08 25 4
gpt4 key购买 nike

我有这样的代码(C++):

namespace models
{
class model
{
private:
ui::window* win;
};
}

namespace ui
{
class window
{
private:
models::model* modl;
};
}

如您所见,这是一个令人大喊大叫的 hell 。如您所知,这段代码无法编译,除非我在模型之前为 window 提供前向声明,通常这样做是不合理的,因为上面不是完整的代码,而且代码将会扩展。

是否有系统的方法来解决这个问题?

最佳答案

unless I provide a forward declaration for window before models, which is not rational to do so in general

事实上,它是。您应该尽可能使用前向声明而不是包含或完整定义。

但最重要的是,您的设计至少看起来很笨拙。

编辑:根据请求,带有前向声明的代码:

namespace ui
{
class window;
}
namespace models
{
class model
{
private:
ui::window* win;
};
}

//required if this is in a different file
namespace models
{
class model;
}
namespace ui
{
class window
{
private:
models::model* modl;
};
}

关于c++ - 声明/定义顺序依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10597649/

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