2013-07-12 62 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回答。