Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Использование указателя на метод вместо виртуального метода - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Компилятор http://www.cyberforum.ru/cpp/thread193991.html
Здравствуйте. Пишу компилятор pas->asm на с++ Может кто-то подскажет генератор конструкцый или что-то подобное: <переменная1>+<переменная2> mov...
C++ Дан файл F, содержащий координаты множества точек на плоскости. Переписать в файл G попарно точки, через которые проходят медианы этого множества. Помогите плз. Дан файл F, содержащий координаты множества точек на плоскости. Переписать в файл G попарно точки, через которые проходят медианы этого множества. Медианой множества, состоящего... http://www.cyberforum.ru/cpp/thread193967.html
C или C++(не холивар) C++
Здравствуйте. Участвую в различных олимпиадах по программированию, пишу обычно на C++, используя все его вкусности в виде STL, ООП, темплэйтов и проч. Накануне в двух задачах не уложился в...
x86 интерпретатор исходный код C++
кто-нибудь слышал про интерпретаторы x86? в инете нарыл только что в qemu, bochs есть встроенные интерпретаторы команд x86 процессора, но пока не докопался до них. Нужно самому написать такой...
C++ Крестики Нолики http://www.cyberforum.ru/cpp/thread193237.html
учу си месяц дали задачу... хелп ми плиз! Игра крестики нолики. Игра в крестики нолики вдется на квадратном поле 3*3. Играют двое. Начинают крестики. каждый из игроков, поочередно, ставит свой...
C++ Алгоритмы и программы по использованию указателей и динамических структур данных Здравствуйте! Помогите, пожалуйста, написать задачу. Вот текст:Дан указатель P0 на один из элементов непустого двусвязного списка. Вывести число N — количество элементов в списке, а также указатели... подробнее

Показать сообщение отдельно
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1287 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
17.04.2011, 10:40
Цитата Сообщение от Evg Посмотреть сообщение
напиши исходник хотя бы схематично, а не на словах объясняй. И, как я уже неоднократно объяснял, сделай это без шаблонов
Я полностью исходник написал уже.) Шаблоны только для уменьшения ручного кодирования, BlackBox работает без шаблонов, т.е. с выносом в библиотеку трудностей не будет.
Я повторю код.
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// Интерфейс функтора. Ничего не знает о классах A,B и любых других.
class FunctorBase
{ public:
        virtual void Execute() = 0;
};
 
// Никаких шаблонов нету.
void BlackBox( FunctorBase * f )
{
        // Твой код
        // Под конец выполняем функтор
        f->Execute();
}
 
// другой файл/модуль/пофиг
// 
template<class T>
class Functor : public FunctorBase
{
public:
      Functor( T * t )
      : obj(t)
      {}
 
      void Execute()
      {
            obj->func1();
      }
 
       T * obj;
};
 
// Пользовательские классы. Ничего не знают о FunctorBase и Functor  и BlackBox
class A
{
public:
      void func1();
};
class B;
class C
{
public:
         void func1();
         void func2();
};
 
template<>
void Functor<C>::Execute()
{
     obj->func1();
     obj->func2();
}
 
void main()
{
      A a;
      B b;
      C c;
 
      Functor<A> fa(&a);
      Functor<B> fb(&b);
      Functor<C> fc(&c);
 
      BlackBox( &fa );
      BlackBox( &fb );
      BlackBox( &fc );
 
}
Добавлено через 1 минуту
Если в BlackBox передавать по ссылке, то ещё проще код сделать можно.

Добавлено через 2 минуты
Шаблоны используются только в пользовательском коде и можно обойтись без них. Это просто облегчение жизни пользователю. BlackBox шаблоны не использует.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru