Ошибки, баги, вопросы - страница 2359
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Специально для Вас перепроверил с учётом
Все нормально DJ
Какой компилятор у вас?
У меня на VS 2010:
binary '=' : no operator found which takes a right-hand operand of type 'A' (or there is no acceptable conversion)
p.s. Я только не очень понял, что значит "с учётом"? Речь шла о допустимости неявного копирования базового класса в производный.
В Visual Studio мой пример тоже работает. Я имел ввиду явный оператор копирования и пояснил это кодом.
Написал на всякий случай, чтобы при запрете нервного явное заодно не запретили бы случайно
В Visual Studio мой пример тоже работает. Я имел ввиду явный оператор копирования и пояснил это кодом.
О явном операторе не шла речь. Я говорил о недопустимости неявного оператора в данном случае, которую вы назвали "узостью мышления", а это не так.
Если требуется провести копирование, то в C++ нужно сначала явно кастить b к нужному типу. Ибо такое копирование - это нарушение инкапсуляции объекта. Поэтому ни о какой неявности речи быть не должно.
Я имел ввиду явный оператор копирования и пояснил это кодом.
Сомневаюсь, что компилятор разделяет их (в контексте кода) на явные и неявные. Иначе это исправить было бы просто
Кстати, с типом оператора, похоже, как раз таки все нормально
Сначала он ищет оператор В::, если его нет, тогда уже ищет в А::, если и там нет, тогда считает свой долг выполненным и ничего не делает (хотя указатель в итоге битый) :)
если и там нет, тогда считает свой долг выполненным и ничего не делает (хотя указатель в итоге битый) :)
Почему ничего не делает? Он копирует неявным (автоматическим) оператором operator=(const A&), чего делать не должен.
Да и уберите вы наконец эту звёздочку после B, глаз режет ) С этим багом то уже всё выяснили.
Да и уберите вы наконец эту звёздочку после B, глаз режет ) С этим багом то уже всё выяснили.
Лично мне объектные переменные без звездочки глаз режут )) Одна из противных ошибок - написать A a=new A вместо *а и долго не понимать в чем дело) Я наоборот показал, что все работает правильно, если последовать Вашему совету и объявить приватный оп.=&. И в этом случае тогда редактор сразу выдаст ошибку. Буду теперь так делать всегда ))
Особенности double знаю, но не такие, что если поменять порядок сложения (за исключением относительно сильно отличных чисел), то результат будет разный! Просьба объяснить глупцу, из-за чего здесь такое происходит?
В исходнике нужно смотреть только на две нижние строки.
Ошибка для разработчиков.
Скрипт не компилируется, определите почему))). Используйте прикрепленный файл.
Этот же файл: