破坏循环依赖

Taz*_*ngo 1 c++ c++11

我在编译循环依赖时遇到问题.我做了一些研究,人们建议使用前瞻性声明.我仍然遇到问题,因为具有前向声明的类正在使用转发类中的方法.这导致编译器给出错误"A类具有不完整的字段b".如何绕过A需要B的循环依赖,B需要A?

啊:

#ifndef A_H_
#define A_H_

#include <iostream>
//#include "B.h"

class A
{
    class B;
    private:
        B b;
    public:
        A();
        ~A();
        void method();
};
#endif
Run Code Online (Sandbox Code Playgroud)

A.cpp:

#include <iostream>
#include "A.h"

A::A()
{
}

A::~A()
{
}

void A::method()
{
    b.method();
}
Run Code Online (Sandbox Code Playgroud)

BH:

#ifndef B_H_
#define B_H_

#include <iostream>
//#include "A.h"

class B
{
    class A;
    private:
        A a;
    public:
        B();
        ~B();
        void method();
};
#endif
Run Code Online (Sandbox Code Playgroud)

B.cpp:

#include <iostream>
#include "B.h"

B::B()
{
}

B::~B()
{
}

void B::method()
{
    a.method();
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*zig 7

你的课无法奏效.每个A包含一个B,包含一个A,其中包含一个B等无限的广告.