c ++前向声明和不完整类型

Ale*_*qué 2 c++ circular-dependency forward-declaration incomplete-type

你好,我在使用前向声明时遇到了麻烦.我无法访问转发的类函数,但我需要这样做.

这是我的Window.h:

#include "Tab.h"  // Needed because Window will create new Tabs

class Window {
  public:
    ...
    void doSome();

};
Run Code Online (Sandbox Code Playgroud)

这是Tab.h:

class Window;  // forward delcaration

class Tab {

public:
  class Tab(Window *parent);
  void callParentFunction();

private:
  Window *m_parent;
};
Run Code Online (Sandbox Code Playgroud)

最后,Tab.cpp:

#include "Tab.h"

Tab::Tab(Window *parent) {
  m_parent = parent;
}

Tab::callParentFunction() {
  m_parent->doSome();  // Error
}
Run Code Online (Sandbox Code Playgroud)

编译器返回以下错误:无效使用不完整类型'struct Window'

如何知道它已经包含Tab.h来创建标签,我如何访问父节点的功能?如果我不能,你建议我做什么?

jua*_*nza 6

您需要Window类的定义才能调用

 m_parent->doSome();
Run Code Online (Sandbox Code Playgroud)

因此,包括Window.hTab.cpp.