我的重载运算符 == 中的 C++ 参数太少



我正在尝试通过使重载运算符==来比较两个数组。 我的代码看起来像这样:

//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进行比较(。非成员表单采用两个参数(将它们一个与另一个进行比较(。弄清楚你想要哪一个,并坚持下去。

相关内容

  • 没有找到相关文章

最新更新