![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
maxvanceffer |
![]()
Сообщение
#1
|
![]() Студент ![]() Группа: Участник Сообщений: 72 Регистрация: 30.5.2009 Из: Moldova Пользователь №: 790 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Вообщем странный вобще задвиг у компилятара..
есть класс : Currency(); explicit Currency( const int& id, const QString &name, const QString& code ); explicit Currency( const Currency& other ); virtual ~Currency(); private: QSharedDataPointer<CurrencyData> d; написана прям по классике из доков Qt, и где в другом классе пытаюсь вернуть его и не может Currency Someclass::exchangeRate() { some code ... return Currency(); } выдаёт ошибку : error: no matching function for call to 'Currency::Currency(Currency)' почему компилятор передаёт параметр в конструктор обтекта ? |
|
|
![]() |
iReset |
![]()
Сообщение
#2
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 178 Регистрация: 6.6.2012 Пользователь №: 3414 Спасибо сказали: 23 раз(а) Репутация: ![]() ![]() ![]() |
...с обычным конструктором копии.... а в данном случае его просто нет (а сходный метод используется только с явным вызовом конструктора со ссылкой - из-за explicit) и компилятор ругается. Теперь я не понял. Как это нет конструктора копирования? А это: explicit Currency( const Currency& other ); Или имеется в виду, что это конструктор копирования, но необычный? И, кстати, такая ошибка выдаётся даже без shared указателя - я проверял. |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 27.2.2025, 6:52 |