gpt4 book ai didi

c++ - 访问封闭类的 protected 成员 [嵌套类]

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

我得到了以下代码:

class enclosing{
protected:
int var1 = 2;
int var2 = 4;
public:
class problem{
friend enclosing;
public:
void DoStuff(enclosing&e1){
int Sum = e1.var1 + e1.var2;
}
}i1;
}e1;

我的问题是,如何访问封闭类的 protected 成员变量?
这甚至合法吗?

最佳答案

你的友元倒退了——一个类不能声明自己是其他人的 friend 。

与 Java 的“内部类”不同,在类中定义的类不会自动访问定义它的类的实例 - “内部”类是完全独立的,您需要将它传递给您的实例想要它一起工作。

像这样:

class enclosing
{
protected:
int var1 = 2;
int var2 = 4;
public:
friend class problem;
class problem
{
public:
void DoStuff(enclosing& e){
int Sum = e.var1 + e.var2;
}
} i1;
} e1;

int main()
{
e1.i1.DoStuff(e1);
enclosing e2;
e2.i1.DoStuff(e1); // Also works
enclosing::problem x;
x.DoStuff(e2); // This, too.
}

关于c++ - 访问封闭类的 protected 成员 [嵌套类],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30077941/

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