如何解决这种循环依赖关系?

时间:2019-08-16 22:49:59

标签: c++

我有一个element接口,该接口返回当前元素的网格。我有网格,它是元素的集合。网格还引用了网格,因为它想操纵网格。每当我尝试编译时,都会收到错误消息,指出无效使用了不完整的类型“ class Mesh”。

AbsElem.h

class Mesh;

class AbsElem{
  virtual Mesh& GetMesh()const = 0;
};

Elem1.h

#include "AbsElem.h"
#include <vector>

class Elem1 : public AbsElem{

  Elem1(Mesh& m):my_mesh(m){}
  virtual Mesh& GetMesh() const{return my_mesh;}

  void DoStuff(){
   my_mesh.GetVal();
  }

  Mesh& my_mesh;
};

Mesh.h

#include "Elem1.h"

class Mesh{
  public: 
  int GetVal(){return 1;}
  private:
  std::vector<Elem1> collect_elem_;
};

main.cpp

#include "Mesh.h"

int main(){
  Mesh m;
}

编译依据:g++ main.cpp

编译错误:

  

在Mesh.h:1包含的文件中,                    来自main.cpp:1:Elem1.h:在成员函数“ void Elem1 :: DoStuff()”中:Elem1.h:10:4:错误:无效使用不完整类型   “类网格”       my_mesh.GetVal();       ^ ~~~~~~在Elem1.h:1包含的文件中,                    来自Mesh.h:1,                    来自main.cpp:1:AbsElem.h:2:7:注意:“类Mesh”类Mesh的前向声明;          ^ ~~~

0 个答案:

没有答案