наследование от класса - параметра шаблона
От: gencoder  
Дата: 11.04.17 15:56
Оценка:
Имеется иерархия классов для набора данных Data, Data1 ... DataN. Требуется создать набор различных обработчиков этих данных.
Пробую создать иерархию декораторов ActorDecorator ... ActorDecoratorM, так чтобы потом использовать как-то так ActorDecorator23<Data125>.

Возможно ли унаследоваться от параметра шаблона ?

template<class T> struct Data {
    T x;
    virtual void write(){ cout << "Data = " << x << endl; };
};

template<class T> struct Data1 : public Data<T> {
    T y;
    virtual void write() final { Data<T>::write(); cout << "add Data 1" << y << endl;}
};


template<class D, class T> struct ActorDecorator: public D<T> {
    T res;
    virtual void do(){ res = static_cast<D<T>*>(this)->x; cout << res*res << endl; }
};

main(){
    ActorDecorator<Data1,float> s;
}
// error: expected template-name before ‘<’ token
//  template<class D, class T> struct ActorDecorator: public D<T> {
//                                                            ^
crtp
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.