如何从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'不是模板类型。
答案 0 :(得分:1)
由于您的课程是模板模板参数模板化的,因此您应该只使用Containter
。
template<template<class> class Container>
class Myclass : public boost::enable_shared_from_this<Myclass<Container> >
{
};
答案 1 :(得分: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> >
{
// ...
};
这是ForEveRs的答案。