2

我试图通过制作一个重载的运算符来比较两个数组==。我的代码看起来像这样:

//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 文件中有一个错误,它说:

此运算符函数的参数太少,未找到 'operator==' 的函数定义。

对此错误的任何建议/解决方案将不胜感激!

4

2 回答 2

3

这条线在这里有两个问题:

//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);
于 2019-10-12T19:49:59.917 回答
0

operator==in与inmyArray.cpp不同。后者是 class 的成员函数,前者是独立的非成员函数。operator==myArray.hmyArray

的成员函数形式operator==采用一个参数(与 比较*this)。非成员形式采用两个参数(一个与另一个进行比较)。弄清楚你想要哪一个,然后坚持下去。

于 2019-10-12T19:44:03.517 回答