相互关联的类

Interlinked classes

本文关键字:关联      更新时间:2023-10-16

我有两个班:A和b。
我想:
类A有指向类B的指针
类B的方法可以访问A的私有成员

当我试图编译的时候,我得到了一个奇怪的错误列表,像这样:

"error C2614: 'A':非法成员初始化:'b_ptr'不是基类或成员。"

如何消除它们?

总体情况:
A类是一个大实体,B类是一个辅助类,分别读取输入文本文件和调整A类的设置。也许这个OOD有问题?

"A.h"

:

#include "B.h"
class A
{
    // friend class B;
public:
    A() : b_ptr(new B(this)){};
private:
    int a_1;
    int a_2;
private:
    B* b_ptr;
};
"B.h"

:

#include "A.h"
class B
{
public:
    B(A*const a) : a_ptr(a) {};
private:
    A* const a_ptr;
};

你有一个循环依赖的头文件没有包含保护。

一个可能的解

你的"B.h"只需要一个前向声明。改变:

class A;
class B
{
public:
    B(A*const a) : a_ptr(a) {};
private:
    A* const a_ptr;
};