Перегруженный оператор ==

108
07 июня 2019, 02:40

Не получается использовать перегруженный оператор ==

Конструктор класса Mat, отдельный файл, методы в хэдере

 /**
 * Создает вектор векторов с числами, т.е. матрицу заполненную нулями 0.
 */
 Mat::Mat(int columns, int rows) {
     vec.resize(columns, vector<double>(rows));
}

Файл test, перегрузка и использование

void TestExtension::run() {
Mat *testMatrix1 = new Mat(2,4);
Mat *testMatrix2 = new Mat(2,4);
if (testMatrix1 == testMatrix2) {
    cout << "true" << endl;
}

}

bool operator==(const Mat &lhs, const Mat &rhs) {
    return true;
}

Результат выполнения сравнения всегда false! Более того, мне CLion подсвечивает, что testMatrix1 == testMatrix2 всегда false

Почему у меня не вызывается перегруженный оператор?

Answer 1

Вы в своем тесте указатели на матрицы сравниваете, вместо сравнения самих матриц. Какой же еще вы ожидали результат? Указатели на два разных объекта всегда отличаются, потому и получается false

READ ALSO
WC_LINK центрирование текста по вертикали

WC_LINK центрирование текста по вертикали

Каким образом можно выровнять по вертикали контент окна с классом WC_LINK? Флаг SS_CENTER не помогает

139
Clion+MinGW+SDL2+CMake

Clion+MinGW+SDL2+CMake

Пожалуйста помогите исправить ошибку

96
Вводится знаковое целое длинное число(32 бита) А. Необходимо циклически сдвинуть А вправо на n бит

Вводится знаковое целое длинное число(32 бита) А. Необходимо циклически сдвинуть А вправо на n бит

Нашёл программу выполняющую условие моей задачиНужно организовать ввод самого числа А и ввод числа n

107
Обработка нажатия комбинации клавиш

Обработка нажатия комбинации клавиш

Как сделать обработку нажатия комбинации клавиш (например ctrl + n), что-бы после этого выполнялось какое-то действие?

141