我做了这个例子来理解[]运算符的使用,但是这段代码给了我一个错误 "运算符声明为函数数组","示例[0]"中的运算符[]不匹配和这样相同的错误。请告诉我我做错了什么,请解释一下。提前致谢
#include <iostream>
using namespace std;
class example
{
private:
double temp[8];
public:
example ()
{
temp[0] = 3.5; temp[1] = 3.2; temp[2] = 4; temp[3] = 3.3;
temp[4] = 3.8; temp[5] = 3.6; temp[6] = 3.5; temp[7] = 3.8;
}
double& opeator[] (int Index);
};
double& example::operator[](int Index)
{
return temp[Index];
}
int main ()
{
example Example;
Example[0] = 4;
double temp = Example[4];
}
答案 0 :(得分:2)
此:
double& opeator[] (int Index);
应该是:
double& operator[] (int Index);
// ^
请同样我也不明白[]运算符的使用,请稍微解释一下。我读了这个并做了这个例子来理解但仍然有理解的问题。
好吧,operator[]
对模拟数组索引行为特别有用。标准库在“类似数组”的类上使用此运算符,如std::vector
或std::deque
。
您的示例(显然除了类型):
double& example::operator[](int Index) {
return temp[Index];
}
是运营商的完美应用。我建议你改变的唯一方法是Index
的类型:它应该是std::size_t
。
有关运算符重载的更多信息,请参阅this question。