我有这样的代码(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/