![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
voipp |
![]()
Сообщение
#1
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 116 Регистрация: 20.10.2009 Из: Msk Пользователь №: 1166 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Значит есть класс CTable от него наследуется CMatrix а от него SLAU.наследование открытое. в CTable определен operator=(const CTable& table). Строчки вида
без ошибок компилируются.А вот строчки вида вводят компилятор в недоумение(операции сложения и умножения выполняются без ошибок).Вот что он пишет: не найден оператор= принимающий правый аргумент типа CMatrixТеперь в недоумении я.Почему это происходит и как это исправить? Сообщение отредактировал voipp - 4.4.2010, 23:19 |
|
|
![]() |
ViGOur |
![]()
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Ну почему же!
Что не правильно в том, что оператор присваивания класса Integer будет принимать в качестве параметра int? Добавлено: Или если взять пример: class Животное{...}; class Лошадь: public Животное{...}; Почему не правильно: Лошадь::operator=( Животное&) ? Лошадь это же животное и почему ей нельзя присвоить все свойства присущие животному, того или иного возраста или пола? з.ы. я знаю, что это не правильно. Просто хочу услышать почему, так как уже не помню почему! ![]() |
|
|
AD |
![]()
Сообщение
#3
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Да все очень просто. Лучше не делать таких вот операторов из-за неявного преобразования типов. о вреде неявного преобразования написано очень много. Думаю, сможешь найти!
![]() |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 22.7.2025, 20:37 |