如何解析头文件中的循环引用

问题描述

我有以下头文件(为了说明而简化):

#include <vector>
class Box;
class Item {
  int row;
  int column;
  Box *box;
public:
  Item(Box *b) : box(b) {}
  void thiswontcompile() { box->dosomething(); }
  void foo();
};
class Box {
  std::vector<Item*> items;
public:
  Box() {}
  void addsquare(Item *sq) { items.push_back(sq); }
  void bar() { for (int i=0; i<items.size(); i++) items[i]->foo(); }
  void dosomething();
};

编译器反对 thiswontcompile() 的行,抱怨不完整类型“class Box”的无效使用。我知道我可以通过将此定义移动到实现文件来纠正错误,但是有没有办法将所有这些编码保留在头文件中?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)