2012-05-20 164 views
2

是否可以为此数据类型编写模板定义?递归模板

myclass<int, myclass<int> > data; 

第二个模板变量应该是可选的,其默认值为相同类型。

澄清

现在我用这个定义:

class defaultClass { }; 
template <typename T, typename C=defaultClass> 
class myclass { ... }; 

我想预定义在defaultClassmyclass<T>

我想实现的东西,如自动实现的属性:第二个参数应该是包装变量被定义的上下文。如果上下文被忽略,它应该在由模板类本身创建的对象中。 (我知道它可以解决的另一种方式,这只是使用情况。)

+0

你可以给一个用例 –

+0

“同一类型的默认值”---哪个类型? –

+0

如果'defaultClass'是'myclass ',那只能扩展到'myclass >>>>>' – kennytm

回答

2

看起来非常相似,

http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern

您可以通过一个类层次结构与模板的基本类型做你想做的事然后你的每个类都可以从该基类派生出来,如

template<class T> class base { ... }; 

class derived: public base<derived> {...}; 
+1

您可以在此处执行“模板”类myclass1:public myclass > {...}“。您必须“传递”模板参数以匹配类的定义。 –