gpt4 book ai didi

c++覆盖数组类的>>运算符

转载 作者:行者123 更新时间:2023-11-28 00:31:11 24 4
gpt4 key购买 nike

我正在尝试为我自己的数组类覆盖 >> 运算符:

std::istream& operator>>(std::istream& input, Array& array) {
for (int i = 0; i < array.size; i++)
input >> array[i];

return input;
}

但我变成了以下错误:

std::istream& Array::operator>>(std::istream&, const Array&)' must take exactly one argument

我见过的所有例子都是这样实现的。我不知道,为什么编译器想要精确的一个参数?我该怎么办?

最佳答案

如果 operator>> 是该类的成员,它将对 Array 对象进行操作并获取您为其提供的参数:

Array a;
a >> whatever;

你似乎想要一个 istream 写入它,这意味着它不是成员,所以要么将它移到类之外,要么将它声明为 friend (这有效地使其成为非成员):

class Array
{
//.........
friend std::istream& operator>>(std::istream& input, Array& array) {
for (int i = 0; i < array.size; i++)
input >> array[i];

return input;
}
};

关于c++覆盖数组类的>>运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22874250/

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