![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| MaxWave |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 8.3.2006 Репутация: нет Всего: нет |
Вот если есть такая ситуация, когда нужно выбрать тип переменной в зависимости от случая (например переданного параметра).
Нужно, чтобы это работало, а как??? При компиляции ошибка: redefinition; different basic types. Это сообщение отредактировал(а) MaxWave - 19.4.2006, 21:01 |
|||
|
||||
| likehood |
|
|||
|
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: 8 Всего: 24 |
Правильно компилятор ругается, нельзя так делать.
|
|||
|
||||
| MaxWave |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 8.3.2006 Репутация: нет Всего: нет |
А как же тогда быть? Классы class1,class2,class3,class4 имеют много одинаковых функций, являются производными от class0, но class0 не имеет доступа к функциям производных классов. ПРосто моей ф-ии передается параметр, в зависимости от него мне надо создать определенный объект и с помощью этого
обработать его. Посоветуйте, как лучше сделать? |
|||
|
||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
MaxWave, если не подходит такой вариант:
То напрашивается вывод о не самом лучшем дизайне, хотя, конечно, на такое поведение объектов могли быть свои причины. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| MaxWave |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 8.3.2006 Репутация: нет Всего: нет |
Это не подходит, т.к. "с" не имеет доступа к функциям производных классов. class0 - это какое-то геометрич. тело. Производные классы - куб, сфера, конус, пирамида и т.д. Эти все производные классы имеют ф-ии: вычисления объема, массы, момента инерции и т.д. Сначала я сделал много ф-ий (в каждой свой тип объекта) и программа была очень разбухшая. Елси же я сделаю так, как задумал, то программа уменьщится в 10 раз, т.к. все ф-ии работы с телами подобные и различаются лишь нгесколькими строками, где и идет определекние типа объекта.
|
|||
|
||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
MaxWave, чем тебя механизм виртуальных функций не устраивает, я не понимаю. С геометрическими телами у тебя вообще классический пример наследования получается.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: 1 Всего: 26 |
MaxWave, че то не догнал почему то,что предложил Void не подходит.
Добавлено @ 21:55 Указателю на базовый класс может указывать на производные классы и при этом ессно все работать будет.(правдв до сих пор не понимаю как они это реализовали -------------------- Жизнь - печальная штука. |
|||
|
||||
| MaxWave |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 8.3.2006 Репутация: нет Всего: нет |
Все, проблема решена! Я просто перепутал базовые классы. В правильном базовом классе есть ф-ии, которые переопреляются в производных! Спасибо всем за ответы!
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |