C ++循环包含 - > forward declare class definition withouth header included

时间:2018-03-06 14:10:05

标签: c++

我想知道是否存在循环包含的解决方案,通过在较低级别函数中声明更高级别的函数,如下例所示: 我想做的(这是我的实际问题)就像在C风格中而不是包含模块的头部来访问它的功能,在当前文件中定义函数本身而不需要包含模块头

架构示例:

CMSampleBuffer

代码示例:

此示例提供以下2个错误:

  • 只能为对象和函数指定存储类
  • 不完整类型嵌套名称说明符中使用的应用程序
APPLICATION (highest layer)
    |
    v
MIDDLEWARE (layer in between)
    |
    v
OPERATING SYSTEM (lowest layer)

2 个答案:

答案 0 :(得分:0)

你需要一些cpp文件来完成这项工作,并在这些文件中包含方法体,以避免你所说的问题。

例如将OS更改为:

class OS {
public:
    OS() {}
    ~OS() {}
    int getInfo();
};

然后在cpp:

中声明getInfo的正文
OS::getInfo() { return Application::get(); }

并在该cpp。

的顶部包含Application.h和OS.h

答案 1 :(得分:0)

鉴于您将get置于Application的范围内,Application的定义目前是您无法解决的要求。 如果您不需要Application的私有成员来调用get,您可以考虑使用外部链接的命名空间范围函数int application_get();,该函数可以在{{1}中声明没有问题

OS.hpp

让我说,从软件架构的角度来看,我对这样的设计存在很大的疑问,但是你要求提供一个围绕你的问题的工具,这就是一个。我相信你会做出最适合你的决定