|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.06.2012, 21:43 | #1 |
Пользователь
Регистрация: 26.04.2009
Сообщений: 13
|
Ошибка с конструктором копирования
В функции main() в строках "a=b++;" и "a=b++;" компилятор выдает ошибку:
No matching function for call to `SimpleCircle::SimpleCircle(SimpleC ircle)' candidates are: SimpleCircle::SimpleCircle(SimpleCi rcle&) SimpleCircle::SimpleCircle(int). Код:
Смех без причины - признак Даламбера.
|
13.06.2012, 01:09 | #2 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
попробуй переписать конструктор вот так:
SimpleCircle(const SimpleCircle & rhs) // <= Конструктор копирования |
13.06.2012, 02:50 | #3 |
Пользователь
Регистрация: 10.06.2012
Сообщений: 44
|
Я только что запустила ваш код у себя (VS 2008), и все корректно заработало.
Да и конструктор копирования вполне адекватный. Действительно, там в передаваемом в конструктор параметре ставят const, но конкретно в данном случае это не играет роли... хотя, кто знает, может для вашего компилятора это имеет какое-то важное значение.. |
13.06.2012, 11:52 | #4 |
Пользователь
Регистрация: 26.04.2009
Сообщений: 13
|
Переделывал так:
Код:
Код:
In copy constructor `SimpleCircle::SimpleCircle(const SimpleCircle&)': passing `const SimpleCircle' as `this' argument of `int SimpleCircle::GetRadius()' discards qualifiers.
Смех без причины - признак Даламбера.
|
13.06.2012, 11:54 | #5 | |
Пользователь
Регистрация: 26.04.2009
Сообщений: 13
|
Цитата:
Смех без причины - признак Даламбера.
|
|
13.06.2012, 15:12 | #6 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Очень хорошо. Копирующий конструктор мы тебе уже вылечили. Теперь будем лечить геттер. Перепиши его вот так:
int SimpleCircle :: GetRadius() const {return *itsRadius;} |
13.06.2012, 16:16 | #7 | |
С++
Форумчанин
Регистрация: 22.09.2008
Сообщений: 791
|
Цитата:
Форматируйте код, будьте людьми.
|
|
13.06.2012, 16:26 | #8 |
Пользователь
Регистрация: 10.06.2012
Сообщений: 44
|
Там ставили const для того, чтобы быть уверенным, что передаваемый по ссылке объект не изменится в процессе работы конструктора копирования. Не так разве?
Последний раз редактировалось Лета; 13.06.2012 в 18:19. |
13.06.2012, 17:59 | #9 |
Пользователь
Регистрация: 26.04.2009
Сообщений: 13
|
Спасибо, разобрался.
Смех без причины - признак Даламбера.
|
13.06.2012, 18:27 | #10 |
Пользователь
Регистрация: 10.06.2012
Сообщений: 44
|
Объясните теперь мне, пожалуйста, значение этого const в конструкторе копирования. Потому что я все время думала, что он(const) там играет просто "перестраховочную" роль.
Вы имели ввиду, что при создании копии объекта, который передается по значению в метод, конструктор копирования вызывается, и базовый объект может в него передаться только по константной ссылке? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблемы с конструктором | Merovingian | Общие вопросы C/C++ | 8 | 28.09.2011 14:55 |
Проблема с конструктором | igor17 | Общие вопросы C/C++ | 13 | 15.05.2011 22:23 |
Макрос для копирования значений из нескольких файлов в один общий с определенным условием копирования | zenner | Microsoft Office Excel | 0 | 21.03.2011 14:48 |
Что-то не так с конструктором | Дырдин | Общие вопросы C/C++ | 7 | 26.03.2010 18:33 |
Помогите с конструктором | girkoff | Общие вопросы C/C++ | 10 | 01.11.2009 16:01 |