Форум программистов, компьютерный форум CyberForum.ru

Компилятор ругается : cannot convert 'this' pointer - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ввести строку , вывести слова по алфавиту. http://www.cyberforum.ru/cpp-beginners/thread385391.html
Ввести строку , вывести слова по алфавиту.
C++ Вывести число с наименьшей дробной частью. Ввести 10 действительных чисел, вывести число с наименьшей дробной частью. http://www.cyberforum.ru/cpp-beginners/thread385390.html
C++ Обработка последовательности символов
Подсчитать, сколько слов в тексте имеют удвоенное сочетание букв, только пожалуйста попроще как нить, чтоб препод не придрался))
Исключения C++
Упражняюсь в программировании. Написал абстрактный класс Shape, от которого наследуются Quadr и Treyg. Создал класс исключения Exeption, причем если в нем не описывать переменные члены, а просто в блоке catsh написать cout<<" error ", то сообщение выводится на экран. Но как только описал переменную itsVal и вызвал метод в catsh, cразу выдает, что функции недоступны. Вот класс Quadr: #ifndef...
C++ Абстракция данных и решение задач на C++ ? http://www.cyberforum.ru/cpp-beginners/thread385344.html
Как понять Абстракция данных и решение задач на C++ ? void sendRequest(Request request) { if (server->error() != Server::errorOk) { // handle } if (request.userName.empty())
C++ Найти последние ти числа, кратные четырём в диапазоне от A до B Вот, что пришло в голову: #include <stdio.h> #include <locale.h> const int N=100; void Last3Kratno4(int a, int b, int c) { int m=0; for (int i=b; i>a; i--) { c=i; подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
16.11.2011, 19:56     Компилятор ругается : cannot convert 'this' pointer
Цитата Сообщение от PraZuBeR Посмотреть сообщение
Собственно проблема. Сейчас пишу класс матрицы, не могу понять на что ругается компилятор. Весь код выкладывать не буду, выложу проблемное место.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
inline T& at(size_type i, size_type j)
{
    return _data[i * _row_size + j];
}
 
matrix& operator +=(const matrix &m)
{
    if (_col_size != m._col_size || _row_size != m._row_size)
        throw std::exception("failed in operator +=");
    for (size_type col = 0; col < _col_size; ++col)
        for (size_type row = 0; row < _row_size; ++row)
            this->at(col, row) += m.at(col, row);
    return *this;
}
На 12 строчку выдает:
error C2662: 'matrix<T>::at' : cannot convert 'this' pointer from 'const matrix<T>' to 'matrix<T> &'

В чем проблема?
Проблема в том, что в вашей функции-операторе параметр указан как const matrix &m, то есть как константный объект. В то же время в строке 12 вы для него вызываете функцию inline T& at(size_type i, size_type j), которая не является константной!

Вам нужно объявить второй такой же метод, но с сигнатурой

inline T& at(size_type i, size_type j) const;

То есть в вашем классе должны быть два таких метода: один константный, а другой не константный.
 
Текущее время: 11:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru