c ++ слишком мало параметров в моем перегруженном операторе == - PullRequest
1 голос
/ 12 октября 2019

Я пытаюсь сравнить два массива, сделав перегруженный оператор ==. Мой код выглядит примерно так:

//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 ]

2 голосов
/ 12 октября 2019

У вас есть 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);
0 голосов
/ 12 октября 2019

operator== в myArray.cpp отличается от operator== в myArray.h. Последний является функцией-членом класса myArray, первый - автономной функцией, не являющейся членом.

Форма функции-члена operator== принимает один параметр (по сравнению с *this). Форма не-член принимает два параметра (которые сравниваются один с другим). Выясните, какой вы хотите, и придерживайтесь его.

...