Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
351 / 270 / 67
Регистрация: 12.12.2012
Сообщений: 2,131

Организация вызова всех наследников

30.01.2015, 00:16. Показов 601. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Видел в игровых исходниках, такой пример.

Есть базовый класс:

C++
1
2
3
4
5
6
7
class CBase
{
    public:
        void Main( );
    
        virtual void Start( ) {  };
};
Наследники..

C++
1
2
3
4
5
6
class CFisrt
{
    public:
    
        void Start( ) { };
};
C++
1
2
3
4
5
6
class CLast
{
    public:
    
        void Start( ) {};
};
И вот я видел такое, что в базовом вызов Start, она виртуальная:

C++
1
2
3
4
void CBase::Main( )
{
    Start( );
}
И функция пустая..

И вот вопрос, заодно и вызываются Start у класса CFisrt и CLast и они не виртуальные.

Я бы на создавал объектов на CFisrt и CLast и с CBase вызывал бы.. А тут как-то просто и не понятно)

Как так же красиво организовать? Не могу разобраться как и куда записываются объекты этих классов и как они так вызываются..
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.01.2015, 00:16
Ответы с готовыми решениями:

Специализация шаблона для всех наследников класса
Здравствуйте, есть такой код: #include <iostream> #include <string> using namespace std; class A {}; class B: public A...

Организация вызова
Хлопцы добрый вечер. Не так давно перешел на php, изучил пару фреймворком, и чисто из спортивного интереса решил написать свой. Столкнулся...

Автоматическое добавление атрибута [Serializable] для всех наследников
Есть много наследников от абстрактного класса NetSerialez, можно както описать чтобы ещё в редакторе всем наследникам добавлялся сам или...

4
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
30.01.2015, 00:21
вы как-то непонятно вопросы задаете. привели какие-то классы, некоторые из них обозвали наследниками, хотя они такими не являются. потов у вас идет "И вот вопрос", а дальше то ли утверждение, то ли что-то другое.
так же непонятно чего вы в конце концов хотите.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
30.01.2015, 00:26
нужно что-то типа этого?

http://rextester.com/DEEEN80857

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//Title of this code
//Compiler Version 18.00.21005.1 for x86
 
#include <iostream>
using namespace std;
 
class CBase
{
    public:
        
        void Main( ) { Start(); }
        virtual void Start( ) {};
};
 
class CFirst: public CBase
{
    public:
    
        void Start( ) { cout<< __FUNCTION__<<'\n';  };
};
 
class CLast: public CBase
{
    public:
    
        void Start( ) { cout<< __FUNCTION__<<'\n';  };
};
 
int main()
{
    std::cout << "Hello, world!\n";
    
    CBase* p1 = new CFirst;
    CBase* p2 = new CLast;
    
    p1->Main();
    p2->Main();
}
0
351 / 270 / 67
Регистрация: 12.12.2012
Сообщений: 2,131
30.01.2015, 00:35  [ТС]
DU2, сори, забыл дописать у классов, что они наследники, писал и забыл в конце проверить перед отправкой )

hoggy, ну да, только это универсальный как-то там.

Вот сюда запись происходит классов:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template <class T> T *GetClassPtr(T *a)
{
    entvars_t *pev = (entvars_t *)a;
 
    if (pev == NULL)
        pev = VARS(CREATE_ENTITY());
 
    a = (T *)GET_PRIVATE(ENT(pev));
 
    if (a == NULL)
    {
        a = new(pev) T;
        a->pev = pev;
    }
 
    return a;
}
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
30.01.2015, 00:45
Цитата Сообщение от pEntity Посмотреть сообщение
hoggy, ну да, только это универсальный как-то там.
Вы чего хотите то? Можете внятно сформулировать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.01.2015, 00:45
Помогаю со студенческими работами здесь

Нужен метод, который возвращает всех наследников определенного типа, загруженного в приложение
Всем доброго времени суток! Вопрос следующий, существует стандартный метод класса Assembly, GetType(), который возвращает коллекцию...

Составить процедуру, которая выводит на экран текст + организация вызова функции
Помогите пожалуйста, составить задачу в С# Составить процедуру, которая выводит на экран текст &quot; Для продолжения игры нажмите...

Рекурсия. Чему равна сумма всех чисел, при выполнении вызова F(1) ?
Никак не додумаюсь как сделать сумму всех чисел и сомневаюсь правильна ли программа вообще, помогите пожалуйста! var n:integer; ...

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

нужно чтобы функция располагалась до ее вызова, после ее вызова и в другом файле. Как это сделать?
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int n, *c; void fun(int a, int b) { for (int i = 0; i &lt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значения справочника
Maks 21.03.2026
Процедура ВодителиНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка) / / Отключаем стандартную обработку (стандартное открытие формы выбора без фильтров) . . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru