2011-11-04 68 views
0

我想要一个带有值参数的模板,除了在运行时不知道该值。例如,实现整数模数n。下面是一些粗糙的C++伪代码:C++中的“动态模板”习语,是否有这样的标准名称?

class zmodn 
{ 
    int v; // the value, 0 <= v < n, n below 
    zmodn (int v_) : v(v_) { } 
    bool operator == (const zmodn &b) const { return v == b.v; } 
    ... 
}; 

class zmodn_dyntmpl 
{ 
    int n; 
    zmodn_dyntmpl (int n_) : n(n_) { } 

    zmodn create (int v_) { return new zmodn (v % n); } 
    zmodn add (zmodn a, zmodn b) { return zmodn ((a.v + b.v) % n); } 
    ... 
}; 

这里,类zmodn_dyntmpl基本上代表动态或运行时的模板。以同样的方式实例化一个模板给一个类,实例化它给出一个“动态类”,其“实例”是zmodn类型的对象。

我的问题是,这个成语是否有一个标准名称?代表动态模板及其实例的类的正确名称是什么?

+2

除了在调用'zmodn'的构造函数之前完成计算之外,它看起来像一个“表达式模板”思想的开始。 – Flexo

+0

http://www.angelikalanger.com/Articles/Cuj/ExpressionTemplates/ExpressionTemplates.htm – Flexo

回答

0

以同样的方式实例化一个模板给出了一个类,实例化它提供了一个“动态类”,其“实例”是类型zmodn的对象。

符合此描述的标准模式称为工厂。

0

是的,它被称为普通类。

模板是模板,因为它们是“代码模板”,它们只存在于编译时。

相关问题