![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#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). Код:
Смех без причины - признак Даламбера.
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]()
попробуй переписать конструктор вот так:
SimpleCircle(const SimpleCircle & rhs) // <= Конструктор копирования |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 10.06.2012
Сообщений: 44
|
![]()
Я только что запустила ваш код у себя (VS 2008), и все корректно заработало.
Да и конструктор копирования вполне адекватный. Действительно, там в передаваемом в конструктор параметре ставят const, но конкретно в данном случае это не играет роли... хотя, кто знает, может для вашего компилятора это имеет какое-то важное значение.. |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 26.04.2009
Сообщений: 13
|
![]()
Переделывал так:
Код:
Код:
In copy constructor `SimpleCircle::SimpleCircle(const SimpleCircle&)': passing `const SimpleCircle' as `this' argument of `int SimpleCircle::GetRadius()' discards qualifiers.
Смех без причины - признак Даламбера.
|
![]() |
![]() |
![]() |
#5 | |
Пользователь
Регистрация: 26.04.2009
Сообщений: 13
|
![]() Цитата:
Смех без причины - признак Даламбера.
|
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]()
Очень хорошо. Копирующий конструктор мы тебе уже вылечили. Теперь будем лечить геттер. Перепиши его вот так:
int SimpleCircle :: GetRadius() const {return *itsRadius;} |
![]() |
![]() |
![]() |
#7 | |
С++
Форумчанин
Регистрация: 22.09.2008
Сообщений: 791
|
![]() Цитата:
Форматируйте код, будьте людьми.
|
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 10.06.2012
Сообщений: 44
|
![]()
Там ставили const для того, чтобы быть уверенным, что передаваемый по ссылке объект не изменится в процессе работы конструктора копирования. Не так разве?
Последний раз редактировалось Лета; 13.06.2012 в 18:19. |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 26.04.2009
Сообщений: 13
|
![]()
Спасибо, разобрался.
Смех без причины - признак Даламбера.
|
![]() |
![]() |
![]() |
#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 |