gpt4 book ai didi

c++ - 如何使 friend 类的层次结构?

转载 作者:太空宇宙 更新时间:2023-11-04 12:21:58 25 4
gpt4 key购买 nike

我有 class A,它只有私有(private)成员(包括数据、方法、构造函数、析构函数......)。我还有 class B,它是 class A 的 friend 。我希望 B 的所有派生类(也有从 B 继承的模板)也成为 class A 的 friend 。有什么办法吗?

最佳答案

C++ 不直接支持这个:"a kid of my friend is not my friend" .

你必须使用另一种方式来实现它;例如,在 class B 中定义一组 protected 访问器函数:

class A {friend class B; int x, y};

class B
{
protected:
int& AccessX(A& a) {return a.x;}
int& AccessY(A& a) {return a.y;}
}

这只有在 class A 非常小的情况下才可行。

如果 class A 很大,您将不得不考虑您究竟希望 class B 及其派生类与 class A 做什么,并将其表示为一组函数。将这些定义为 B 类 中的 protected 函数:

class A
{
A(): x(42), y(99) {}
friend class B;
int x, y;
}

class B
{
protected:
A Create() {return A();}
void Manage(A& object) {object.x += 1; object.y += 2;}
}

关于c++ - 如何使 friend 类的层次结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4482568/

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