提问人:mana 提问时间:8/13/2020 最后编辑:mana 更新时间:8/13/2020 访问量:75
两个私有嵌套类之间的友谊
Friendship between two private, nested classes
问:
我有 4 个班级,A、A1、B 和 B1。类 A 包含私有嵌套类 A1,类 B 包含私有嵌套类 B1。我希望类 B::B1 的构造函数能够访问 A::A1 类型对象的私有数据成员。我的解决方案是使用关键字“朋友”。然而,我很难让外部班级之间的相互友谊发挥作用,而且在线指南没有考虑到两个私人嵌套班级之间的友谊。
计划是让 B 成为 A 的朋友,以便 B1 知道 A1。然后让 A 成为 B 的朋友,这样 A1 就知道 B1。然后使 B1 成为 A1 的好友,以便 B1 可以访问 A1 的私有数据成员。下面是一些无法做到这一点的代码。您可以随意忽略它。
//A.h
#pragma once
#include "B.h"
class A {
friend class B;
private:
class A1 {
friend class B::B1;
private:
int num = 3;
};
A::A1 a1;
}
//B.h
#pragma once
class A;
class B {
friend class A;
//stuff
private:
class B1;
public:
B1& b; // I would prefer this to not be a reference
B(A a); // Error: incomplete type
};
// B.cpp
#include "B.h"
#include "A.h"
class B::B1{
B::B1(A::A1 a1) {
int num = a.num;
};
int num;
};
B::B(A a) : b(a.a1) {}
这段代码似乎有很多错误,但是在我试图让它工作的所有尝试中都存在许多不同类型的错误。对这些错误的解释会有所帮助,但我正在寻找一个工作的例子,说明如何正确地建立友谊和前瞻性声明。
答: 暂无答案
下一个:C++:模板可以成为类的朋友吗?
评论
friend
A::A1
A
A
A1
A1
B::B1
B1
B
B1
B
B1