| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Перегрузка операторов и полиморфизм |
| Автор: grokk 13.5.2008, 22:27 | ||
| Есть массив указателей Data* в каждой ячейке которого указатель на string,int или float Никак не получается перегрузить оператор + так чтобы string+string оставался string int+float оставался float int+int -int string+int/float-string Заранее спасибо,буду рад любой помощи а то уже всю голову изломал
|
| Автор: bsa 13.5.2008, 22:38 |
| grokk, переформатируй код - без отступов читать очень сложно. Зачем ты создавал классы Float и Int, тебе функциональности штатных типов мало? То, что тебе нужно реализуется достаточно просто - нужно лишь три раза перегрузить оператор+ для класса Data (для string, float и int). А уже в нем определять, что в итоге получится. |
| Автор: grokk 13.5.2008, 23:08 | ||
классы float и int создавал для себя,чисто потренироватся,естественно можно было обйтись стандартом я думал что можно както перегрузить оператор + в Date для всех сразу. То что ты имеешь ввиду это сделать Data& Int::operator +(const Int&) Data& Float::operator +(const Float&) Data& String::operator +(const String&) и не прописовать вобще ничего в Data? сорри за нубские вопросы просто тема виртуальных методов для меня достатачно нов) |
| Автор: bsa 14.5.2008, 14:35 | ||
| А причем тут виртуальные методы? не нужно перегружать методы классов Int, Float и String. Нужно перегрузить методы класса Data:
|
| Автор: grokk 14.5.2008, 15:52 | ||||||
так яж должен складывать Data с Data Тоесть у меня есть массив Data**
и мне нужно складывать члены этого массива,1ый со 2ым,2ой с 3им и так далее |
| Автор: archimed7592 14.5.2008, 19:47 |
| grokk, если я правильно понял суть проблемы, то, порекомендую почитать что-нибудь http://www.google.com/search?q=%D0%BC%D1%83%D0%BB%D1%8C%D1%82%D0%B8%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B+%D0%A1%2B%2B... |
| Автор: bsa 14.5.2008, 19:49 | ||
Тогда тебе нужно перегрузить только operator+ для класса Data:
|
| Автор: mes 15.5.2008, 01:08 | ||
У тебя база для Float, Int и т.д. Data - логично что в виртуальном методе дольны возврашаться не float, int, a некий data )) то есть обший тип к которому можно преобразовать все твои типы - одной из разновидностью такого является variant . (не его ли ты случайно создаешь ?) в противном случае решается через мультиметоды - но тогда трудозатраты на подержку кода велики Чтоб посоветовать конкретней в твоем случае надо понять для чего ты так замудрил )) |
| Автор: grokk 15.5.2008, 08:34 |
Да нет просто наткнулся на такой пример где просили создать такой массив Data и складывать его члены. Вот в качестве самообразования и мучаюсь) БУду читать про мультиметоды |