Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ &引用;“动态模板”;C+中的成语+;,这个有标准的名字吗?_C++_Oop_Templates - Fatal编程技术网

C++ &引用;“动态模板”;C+中的成语+;,这个有标准的名字吗?

C++ &引用;“动态模板”;C+中的成语+;,这个有标准的名字吗?,c++,oop,templates,C++,Oop,Templates,我想创建一个带有value参数的模板,但运行时该值未知。例如,实现对某个数n进行模化的整数。下面是一些粗糙的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

我想创建一个带有value参数的模板,但运行时该值未知。例如,实现对某个数n进行模化的整数。下面是一些粗糙的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类
{
int v;//值为0
以同样的方式实例化模板会产生一个类,实例化它会产生一个“动态类”,其“实例”是zmodn类型的对象


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

是的,它被称为普通类


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

这看起来像是“表达式模板”思想的开端,除非您在调用
zmodn
的构造函数之前进行了计算。