|
С++ Определение наследования при помощи препроцессора
| ☑ |
0
Тролль главный
01.03.13
✎
10:30
|
1. есть базовый класс
class Base
{
public:
virtual void Foo();
};
2. есть класс-шаблон
template<class T>
class Derived: T
{
public:
void Foo();
};
В большинстве случаев предполагается, что параметр T будет наследником от Base, а значит Derived<t>::Foo() будет виртуальным.
Но не всегда, в таком случае Derived<t>::Foo() будет не виртуальной, а попросту она и вообще в таком случае не нужна.
Как избавится от еее определения при помощи препроцессора?
|
|
1
fmrlex
01.03.13
✎
10:32
|
ну покури директивы препроцессора на свой компилятор.
|
|
2
Тролль главный
01.03.13
✎
10:37
|
(1) не хотелось бы всюду писать директивы, слишком муторно
|
|
3
Александр_
Тверь
01.03.13
✎
10:49
|
(2) да бросай ты программирование вообще. это слишком муторно.
|
|
4
Тролль главный
01.03.13
✎
10:51
|
(3) да лучше 1С бросить
|
|
5
Тролль главный
01.03.13
✎
10:51
|
я просто как-то читал книжку, вот вспомнить не могу, где чувак с шаблонами вытварял разные штуки, типа программирования на уровне метаданных, не ран-тайм
|
|
6
orefkov
01.03.13
✎
11:11
|
(5)
Александреску ищи.
А твой случай решается не препроцессором, а специализацией шаблона.
|
|
7
HeroShima
01.03.13
✎
11:19
|
(0) При помощи шаблонов можно сделать многое, но не всё то, что делается с их помощью делается правильно.
|
|
8
Тролль главный
01.03.13
✎
11:27
|
(6) спасибо, именно так, я в (5) написал
|
|
9
HeroShima
01.03.13
✎
11:30
|
ещё можно всякие бусты и sh распотрошить.
|
|
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан