Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
25 / 25 / 5
Регистрация: 21.04.2011
Сообщений: 141
1

Параметр в конструкторе копирования

11.02.2013, 17:16. Просмотров 2322. Ответов 1
Метки нет (Все метки)

Есть класс
C++
1
2
3
4
5
6
class CMatrix{
  valarray<valarray<double> > matrix;
public:
  CMatrix(const CMatrix &M);
     .....
 };
C++
1
2
3
4
5
6
7
8
9
CMatrix::CMatrix(const CMatrix &M){
  pair<size_t,size_t> s = M.Size();
  matrix.resize(s.first);
  for(size_t i = 0 ; i < s.first ; i++)
    matrix[i].resize(s.second);
  for(size_t i = 0; i < s.first; i++)
    for(size_t j = 0 ; j < s.second ; j++)
      matrix[i][j] = M(i,j);
}
Вы дает ошибку:
In copy constructor «CMatrix::CMatrix(const CMatrix&)»:
/home/anton/Project/C++/Matrix/src/CMatrix.cpp:11:34: ошибка: passing «const CMatrix» as «this» argument of «std::pair<long unsigned int, long unsigned int> CMatrix::Size()» discards qualifiers [-fpermissive]
/home/anton/Project/C++/Matrix/src/CMatrix.cpp:17:27: ошибка: passing «const CMatrix» as «this» argument of «double& CMatrix::operator()(int, int)» discards qualifiers [-fpermissive]

Если убрать модификатор const то все работает нормально. В чем проблема?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2013, 17:16
Ответы с готовыми решениями:

Можно ли в конструкторе копирования поменять один параметр?
Здравствуйте. Мне нужно при создании объекта через конструктор копирования поменять один параметр в...

О конструкторе копирования
Доброго времени суток всем присутствующим. Интересует маленький вопрос. В 15-й строке происходит...

Ошибка в конструкторе копирования C++
Помогите, пожалуйста создать конструктор копирования, который будет копировать элемент и добавлять...

Ошибка в конструкторе копирования
Здравствуйте. Есть один класс для работы с многочленами, который хранит элементы многочлена в...

1
1994 / 1594 / 488
Регистрация: 31.05.2009
Сообщений: 2,982
11.02.2013, 18:13 2
Сделайте метод Size константным
C++
1
std::pair<long unsigned int, long unsigned int> Size() const;
и добавьте константную версию для operator()
C++
1
const double& CMatrix::operator()(int, int) const;
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.02.2013, 18:13

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ошибка в конструкторе копирования
Всем привет, не могу понять проблему, у меня есть структура: struct WindowRender : public...

Указатель this в конструкторе копирования
Добрый всем вечер. Подскажите пожалуйста, как правильно применить в конструкторе копирования...

Ошибка в конструкторе копирования класса
Хотя и делал по образцу, но почему то лезет ошибка записи за пределы динамического массива, хотя и...

Зачем нужна ссылка в конструкторе копирования
Вопрос такой, Зачем нужна ссылка в конструкторе копирования? Почему не передавать напр. по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.