![]() |
|
Модераторы: bsa |
![]()
|
|
| grokk |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 13.5.2008 Репутация: нет Всего: нет |
Есть массив указателей Data* в каждой ячейке которого указатель на string,int или float
Никак не получается перегрузить оператор + так чтобы string+string оставался string int+float оставался float int+int -int string+int/float-string Заранее спасибо,буду рад любой помощи а то уже всю голову изломал
Это сообщение отредактировал(а) grokk - 13.5.2008, 23:02 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
grokk, переформатируй код - без отступов читать очень сложно.
Зачем ты создавал классы Float и Int, тебе функциональности штатных типов мало? То, что тебе нужно реализуется достаточно просто - нужно лишь три раза перегрузить оператор+ для класса Data (для string, float и int). А уже в нем определять, что в итоге получится. |
|||
|
||||
| grokk |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 13.5.2008 Репутация: нет Всего: нет |
классы float и int создавал для себя,чисто потренироватся,естественно можно было обйтись стандартом я думал что можно както перегрузить оператор + в Date для всех сразу. То что ты имеешь ввиду это сделать Data& Int::operator +(const Int&) Data& Float::operator +(const Float&) Data& String::operator +(const String&) и не прописовать вобще ничего в Data? сорри за нубские вопросы просто тема виртуальных методов для меня достатачно нов) |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
А причем тут виртуальные методы?
не нужно перегружать методы классов Int, Float и String. Нужно перегрузить методы класса Data:
|
|||
|
||||
| grokk |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 13.5.2008 Репутация: нет Всего: нет |
так яж должен складывать Data с Data Тоесть у меня есть массив Data**
и мне нужно складывать члены этого массива,1ый со 2ым,2ой с 3им и так далее |
||||||
|
|||||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
grokk, если я правильно понял суть проблемы, то, порекомендую почитать что-нибудь про мультиметоды...
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Тогда тебе нужно перегрузить только operator+ для класса Data:
|
|||
|
||||
| grokk |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 13.5.2008 Репутация: нет Всего: нет |
я думал про такой способ но тут есть прооблема.Даже если я знаю кем на самом деле являются d1 и d2 мне нужен какойто метод который будет возвращать их значение которое находится в private у каждого класса. я думал прописать абстрактный метод в Data и чтоб он в каждом классе возвращал значения класса,но насколько я понял нельзя чтоб возвращаемое значение было разным. поэтому я в тупике |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
У тебя база для Float, Int и т.д. Data - логично что в виртуальном методе дольны возврашаться не float, int, a некий data )) то есть обший тип к которому можно преобразовать все твои типы - одной из разновидностью такого является variant . (не его ли ты случайно создаешь ?) в противном случае решается через мультиметоды - но тогда трудозатраты на подержку кода велики Чтоб посоветовать конкретней в твоем случае надо понять для чего ты так замудрил )) |
|||
|
||||
| grokk |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 13.5.2008 Репутация: нет Всего: нет |
Да нет просто наткнулся на такой пример где просили создать такой массив Data и складывать его члены. Вот в качестве самообразования и мучаюсь) БУду читать про мультиметоды |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |