2013-07-12 7 views
0

Как можно получить шаблонный шаблон с шаблоном типа из boost :: enable_shared_from_this?Как получить шаблонный шаблонный класс из boost :: enable_shared_from_this?

template<template<class T> class Container> 
class Myclass : public boost::enable_shared_from_this<?> { 
}; 

Это не компилировать:

template<template<class T> class Container> 
class Myclass : public boost::enable_shared_from_this<Myclass<Container<T> > > { 
}; 

Ошибка: 'Myclass' не является типом шаблона.

ответ

1

Поскольку ваш шаблон шаблонизирован параметром шаблона шаблона - вы должны просто использовать Containter.

template<template<class> class Container> 
class Myclass : public boost::enable_shared_from_this<Myclass<Container> > 
{ 
}; 
1

Normaly использовать boost::enable_shared_from_this следующим образом

class Myclass 
    : public boost::enable_shared_from_this<Myclass> 
{ 
    // ... 
}; 

Если у вас есть шаблон этого изменения в

template<class T> 
class Myclass 
    : public boost::enable_shared_from_this<Myclass<T> > 
{ 
    // ... 
}; 

Где Myclass<T> является тип вы бы использовать для объявления в другом контексте , Вы должны написать все имя класса с аргументами шаблона. Краткая форма MyClass разрешена только внутри определения.

И для параметров шаблона шаблона вы должны использовать

template<template<class> class T> 
class Myclass 
    : public boost::enable_shared_from_this<Myclass<T> > 
{ 
    // ... 
}; 

Который является exectly Forevers ответ.

Смежные вопросы