gpt4 book ai didi

c++ - 相互关联的类(class)

转载 作者:行者123 更新时间:2023-11-30 05:39:37 25 4
gpt4 key购买 nike

我有 2 个类(class):A 和 B。
我要:
- A 类有一个指向 B 的指针
- 类 B 的方法可以访问 A 的私有(private)成员

在尝试编译时,我得到了一系列奇怪的错误,如下所示:

"error C2614: 'A' : illegal member initialization: 'b_ptr' is not a base or member."

如何消除它们?

总体情况:
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;
};

关于c++ - 相互关联的类(class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32267947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com