C++ friend class 循环包含

C++ friend class circular include

我有这个问题:

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

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

Class B
{
public:
   B()
   {
      A::buffer.push_back(this);
   }
}

有没有其他方法可以自动将 class B 添加到向量中?

感谢您的帮助!

您的代码几乎可以正常工作。

  • 您需要转发声明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); }