C++ 友元类循环包含

Fil*_*šek 3 c++ circular-dependency

我有这个问题:

我有 A 类,它是 B 类的朋友。A 类有一个vector<B>. 但我希望 B 类能够访问 A 类。

class A
{
   friend class B;
   static vector<B*> buffer;
}

Class B
{
public:
   B()
   {
      A::buffer.push_back(this);
   }
}
Run Code Online (Sandbox Code Playgroud)

还有其他方法可以自动将 B 类添加到向量中吗?

感谢您的任何帮助!

Ted*_*gmo 5

你的代码几乎可以工作了。

  • 您需要转发声明B
  • 你需要使用 A::buffer.push_back(this);
class B; // forward declaration

class A {
   friend class B;
public:
   static std::vector<B*> buffer;
};

std::vector<B*> A::buffer{};

class B {
    friend class A;
public:
    B();
};

B::B() { A::buffer.push_back(this); }
Run Code Online (Sandbox Code Playgroud)