crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> преобразование типа и классы
voipp
  опции профиля:
сообщение 4.4.2010, 23:08
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 116
Регистрация: 20.10.2009
Из: Msk
Пользователь №: 1166

Спасибо сказали: 0 раз(а)




Репутация:   0  


Значит есть класс CTable от него наследуется CMatrix а от него SLAU.наследование открытое. в CTable определен operator=(const CTable& table). Строчки вида
CTable A;
SLAU B;
B=A;
без ошибок компилируются.А вот строчки вида
SLAU A,B;
CMatrix A1,A2;
A=(B+A1*A2);
вводят компилятор в недоумение(операции сложения и умножения выполняются без ошибок).Вот что он пишет: не найден оператор= принимающий правый аргумент типа CMatrix
Теперь в недоумении я.Почему это происходит и как это исправить?

Сообщение отредактировал voipp - 4.4.2010, 23:19
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
ViGOur
  опции профиля:
сообщение 5.4.2010, 16:55
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Ну почему же!
Что не правильно в том, что оператор присваивания класса Integer будет принимать в качестве параметра int?

Добавлено:

Или если взять пример:

class Животное{...};
class Лошадь: public Животное{...};

Почему не правильно: Лошадь::operator=( Животное&) ?
Лошадь это же животное и почему ей нельзя присвоить все свойства присущие животному, того или иного возраста или пола?

з.ы. я знаю, что это не правильно.
Просто хочу услышать почему, так как уже не помню почему! :lol:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 5.4.2010, 17:11
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Да все очень просто. Лучше не делать таких вот операторов из-за неявного преобразования типов. о вреде неявного преобразования написано очень много. Думаю, сможешь найти! :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- voipp   преобразование типа и классы   4.4.2010, 23:08
- - kwisp   voipp, по-моему все верно происходит нет же опера...   4.4.2010, 23:49
- - voipp   строчки такого вида будут без ошибок: CMatrix A; S...   4.4.2010, 23:53
- - Litkevich Yuriy   Цитата(voipp @ 5.4.2010, 3:53) строчки та...   5.4.2010, 7:20
|- - voipp   Цитата(Litkevich Yuriy @ 5.4.2010, 8:20) ...   5.4.2010, 8:36
- - ViGOur   voipp, добавь в класс SLAU конструктор копий таког...   5.4.2010, 8:58
- - kwisp   ViGOur, давайте обсудим эту тему. по-моему констр...   5.4.2010, 9:26
- - ViGOur   Как вариант можно и оператор присваивания: SLAU ...   5.4.2010, 9:32
- - Влад   Вообще-то, "по правильному" и operator=,...   5.4.2010, 16:36
- - ViGOur   Ну почему же! Что не правильно в том, что опер...   5.4.2010, 16:55
|- - AD   Да все очень просто. Лучше не делать таких вот опе...   5.4.2010, 17:11
- - Iron Bug   да, я тоже стараюсь избегать неявного преобразован...   5.4.2010, 21:05
- - ViGOur   Цитата(Iron Bug @ 5.4.2010, 22:05) у мелк...   5.4.2010, 21:54
- - kwisp   Цитата(ViGOur @ 5.4.2010, 22:54) Ну вообщ...   6.4.2010, 8:55
- - Влад   Не совсем так. Дефолтный конструктор, конструктор ...   6.4.2010, 10:02


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 17:26