小编Sr1*_*703的帖子

如何用没有头的共享基类解决循环类依赖?

所以我正在创建一个涉及将矢量嵌套在另一个内部的项目,但该结构将无法编译.我认为这是循环依赖的情况,但我看到的所有修复似乎只适用于涉及头文件和单独翻译单元的代码.

#include <iostream>
#include <vector>

class A {
public:
    virtual ~A();
};

// The following forward declaration statements didn't solve the
// compiler error:
// class C;
// class C : public A;

class B : public A {
    std::vector<A*> Avector;    
public:
    void addC(C* Cin){Avector.push_back(Cin);}
    ~B();
};

class C : public A {
    std::vector<A*> Avector;        
public:
    void addB(B* Bin){Avector.push_back(Bin);}
    ~C();
};

int main() {
    B b;
    C c;
    b.addC(&c);
    c.addB(&b);
}
Run Code Online (Sandbox Code Playgroud)

我试着向前宣布

class C;
Class C : public A;
Run Code Online (Sandbox Code Playgroud)

但它似乎都没有用. …

c++ circular-dependency c++11 visual-studio-2012

7
推荐指数
1
解决办法
303
查看次数