powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / А как насчёт наследников в параметрах функций?
12 сообщений из 12, страница 1 из 1
А как насчёт наследников в параметрах функций?
    #38499384
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Вот такой вопрос возник (я чёто изучение С++ закинул, сейчас решил вернуться к нему), в дэлфи, насколько я помню, в параметрах функции можно указать какой-нить класс, и кроме экземпляра указанного класса без каких-либо ошибок туда можно передать его потомка и всё отработает без ошибок.

Так вот, а можно ли так в С++ делать?

Сама задача (выдуманная, для себя) состоит в том, что бы создать класс-интерфейс (насколько я понял в С++ нету чистых интерфейсов, а есть абстрактные классы для этого), унаследовать от него несколько других классов, а в функции указать именно его (общего абстрактного предка). То есть мне надо, что бы передаваемый в функцию объект обязательно имел метод loadModel.

Я правильно задачу то решаю? Или можно лучше?
Если правильно, то не будет ли компилятор ругаться на мою писанину?

Заранее спасибо
...
Рейтинг: 0 / 0
А как насчёт наследников в параметрах функций?
    #38499440
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
class A {
    void loadModel() = 0; // абстрактный метод
};

class B: public A {
   int somedata;
   void loadModel() {
     cout << "loadModel() from B" << endl;
  }
};

void foo (A a) {
  a.loadModel(); // вызываешь
}

void main() {
  B b;
  foo(b);
}
...
Рейтинг: 0 / 0
А как насчёт наследников в параметрах функций?
    #38499663
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр,

по ссылке на предка естественно можно передавать и потомка, ооп есть ооп.
...
Рейтинг: 0 / 0
А как насчёт наследников в параметрах функций?
    #38499664
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр,

ты код то покажи что ли...
...
Рейтинг: 0 / 0
А как насчёт наследников в параметрах функций?
    #38500875
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivПрограмёр,

ты код то покажи что ли...

Дык ) Там кода не 2 строчки уже. А что именно увидеть хотите из кода?

Суть такая, пытаюсь простенький движок для 3Д игрушек написать (считаю, что на практике обучение всегда быстрее и продуктивнее).
А данная часть касалась именно моделей. То есть, я хочу грузить модель с файла и через callback функцию передавать подгруженные данные в экземпляр основного приложения, где ведётся учёт объектов, их прорисовка и т.д.

То есть, подгрузку моделей выношу в отдельную библиотеку... Такое себе модульное приложение... С каким типом моделей решил работать, тот модуль и подключил (для облегчения приложения)... Какой тип игрушки пишешь - тот модуль логики и юзаешь. Ну в общем расчёт на универсальность :) Авось дело получится.
...
Рейтинг: 0 / 0
А как насчёт наследников в параметрах функций?
    #38500941
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр,
callback функция в ооп -моветон.
...
Рейтинг: 0 / 0
А как насчёт наследников в параметрах функций?
    #38500968
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivПрограмёр,
callback функция в ооп -моветон.

А как лучше делать? :)
Но разве в метод одного объекта передавать указатель на другой и потом его пользовать - это плохо?
...
Рейтинг: 0 / 0
А как насчёт наследников в параметрах функций?
    #38501013
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivcallback функция в ооп -моветон.
Если бы без колбэков можно было бы обойтись во всех случаях, то их бы никто не использовал - слишком муторные они :)
Если согласно алгоритма поток выполнения должен прерваться и продолжиться в другом месте после завершения операции, то это решается именно через колбэки.
А ООП тут вообще не причем.
...
Рейтинг: 0 / 0
А как насчёт наследников в параметрах функций?
    #38501071
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрMasterZivПрограмёр,
callback функция в ооп -моветон.

А как лучше делать? :)
Но разве в метод одного объекта передавать указатель на другой и потом его пользовать - это плохо?

На другой ЧТО ?

А лучше делать хотябы интерфейс и указатель на его реализацию, или насделование применять.
...
Рейтинг: 0 / 0
А как насчёт наследников в параметрах функций?
    #38501072
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если бы без колбэков можно было бы обойтись во всех случаях, то их бы никто не использовал - слишком муторные они :)


Они не муторные.
Но в ООП есть вещи поприятнее.
...
Рейтинг: 0 / 0
А как насчёт наследников в параметрах функций?
    #38501086
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivПрограмёрпропущено...


А как лучше делать? :)
Но разве в метод одного объекта передавать указатель на другой и потом его пользовать - это плохо?

На другой ЧТО ?

А лучше делать хотябы интерфейс и указатель на его реализацию, или насделование применять.

ой :) не дописал... на другой = на другой объект (показалось очевидным, видимо ошибся :)) )
Так ведь это же и делаю :) Вопрос именно об этом задавал, можно ли так. Не знаю, может неверно выразился, но считаю метод объекта, который передан как параметр в функцию, callback методом :) Потому и обозвал функцию callback-функцией
...
Рейтинг: 0 / 0
А как насчёт наследников в параметрах функций?
    #38501162
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv Если бы без колбэков можно было бы обойтись во всех случаях, то их бы никто не использовал - слишком муторные они :)
Они не муторные.

Ага, вообще не муторные :)
Предлагаю сравнить один и тот же алгоритм (отправка HTTP запроса и прием ответа) без колбэков и с ними.
http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/example/http/client/sync_client.cpp
http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/example/http/client/async_client.cpp
Абсолютно линейный код превращается в месиво перекрестных ссылок и существенно увеличивается в объеме.
Это значит на порядки меньшая читаемость кода.
Единственное из-за чего колбэки нужны в этом примере, это производительность асинхронного кода при распараллеливании нагрузки.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / А как насчёт наследников в параметрах функций?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]