我正在尝试通过使重载运算符==
来比较两个数组。 我的代码看起来像这样:
//myArray.h
class myArray {
int size, start, end;
int *data;
public:
myArray(int sz);
myArray(int lower, int upper);
int &operator [](const int index);
bool operator == (const myArray& index);
};
//myArray.cpp
bool operator == (const myArray& index);
{
}
但是我的 cpp 文件中有一个错误,它说:
此运算符函数的参数太少,找不到"运算符=="的函数定义。
对于此错误的任何建议/解决方案将不胜感激!
您在这里对这一行有 2 个问题:
//myArray.cpp
bool operator == (const myArray& index);
第一个问题是微不足道的。在这方面没有必要进行;
。事实上,把一个放在那里可能会导致错误。
第二个,更严重的是operator==()
是myArray
的成员函数。因此,您需要像任何其他成员函数一样在定义前面加上类名:
//myArray.cpp
bool myArray::operator == (const myArray& index)
应该工作正常。
另外值得注意的是,如果你不希望它成为一个成员函数(你似乎想要,但以防万一(,你可以这样做:
//myArray.cpp
bool operator == (const myArray& lhs, const myArray& rhs)
{
}
然后将您的声明更改为以下内容:
friend bool operator == (const myArray& lhs, const myArray& rhs);
myArray.cpp
中的operator==
与myArray.h
中的operator==
不同。后者是类myArray
的成员函数,前者是独立的非成员函数。
operator==
的成员函数形式采用一个参数(与*this
进行比较(。非成员表单采用两个参数(将它们一个与另一个进行比较(。弄清楚你想要哪一个,并坚持下去。