gpt4 book ai didi

c++ - friend 和嵌套类

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:50:25 27 4
gpt4 key购买 nike

好吧,我对此感到非常疲惫。代码开始在屏幕上游来游去……必须 sleep 。

所以!好吧,被嵌套类和 friend 们困扰了。

这是伪代码

   class A{
public:
//constructor
// member functions
private:
class B{
//private
int a();
};

class C{
//private
int b();
};
};

因此,一旦创建了类型 A 的对象,我希望它访问 a() 和 b()。我知道我必须为此使用友元函数。那么我应该把 friend class A 放在哪里。这样的表达方式正确吗?

最佳答案

如果你想从 A 类中访问 a()b() 你需要把 friend B 和类 C 中的声明。但是,a()b() 不是类 A 的成员,因此您无法按照您的想法访问它们。相反,您还需要将转发 功能添加到A

class A
{
public:
//constructor
// member functions
private:
class B
{
//private
int a();

friend A; // <-- make A a friend
};

class C
{
//private
int b();

friend A; // <-- make A a friend
};

public:

// forwarding function for a
int a()
{
return bdata_.a();
}

// forwarding function for b
int b()
{
return cdata_.b();
}

private:
B bdata_;
C cdata_;
};

关于c++ - friend 和嵌套类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16806021/

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