gpt4 book ai didi

C++ 错误 : (private data member) was not declared in this scope

转载 作者:太空狗 更新时间:2023-10-29 23:54:06 25 4
gpt4 key购买 nike

假设我有这样一个类:

class Ingredient
{
public:
friend istream& operator>>(istream& in, Ingredient& target);
friend ostream& operator<<(ostream& out, Ingredient& data);
private:
Measure myMeas;
MyString myIng;
};

在这个重载的友元函数中,我尝试设置 myIng

的值
istream& operator>>(istream& in, Ingredient& target)
{
myIng = MyString("hello");
}

在我看来,这应该可行,因为我在友元函数中设置 Ingredient 类的私有(private)数据成员的值,而友元函数应该有权访问所有私有(private)数据成员,对吗?

但是我得到这个错误:‘myIng’没有在这个范围内声明知道为什么会这样吗?

最佳答案

因为您需要明确表示您正在访问 target 参数的成员,而不是局部或全局变量:

istream& operator>>(istream& in, Ingredient& target)
{
target.myIng = MyString("hello"); // accessing a member of target!
return in; // to allow chaining
}

上面的操作完全正确,因为运算符(operator)是您提到的 Ingredientfriend。尝试删除好友关系,您会发现将无法再访问 private 成员。

此外,正如 Joe 评论的那样:流运算符应该返回它们的流参数,以便您可以链接它们。

关于C++ 错误 : (private data member) was not declared in this scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7921621/

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