显式实例化模板的动态使用
Dynamical use of explicitly instantiated templates
可能重复:
模板函数的动态调度?
我想使用非类型模板来创建具有不同内存占用的网格单元,而不必使用堆上动态分配的内存,例如
template <int cell_size>
class myCell {...}
有有限数量的单元格大小(大约10个),因此我可以很容易地显式实例化所有单元格。然而,在编译时不知道需要哪一个单元格,而仅在运行时才知道。
我知道模板是一个编译时概念,但有没有办法以这种方式使用模板化类,特别是因为我可以保证所有必要的单元类型都被显式实例化?
您可以使用工厂模式,但需要一个基类作为返回类型:
template <int cell_size>
class myCell : public cellBase {...}
struct CellFactory
{
static cellBase* getCell(int cell_size)
{
switch (cell_size)
{
case 1:
return new myCell<1>;
break;
//and so on
}
}
}
这之所以有效,是因为你告诉编译器它可以期待哪些专业化。但我认为,对于你试图解决的潜在问题,有一个更好的设计。
相关文章:
- 从C++实例化QML
- 设计一个只能由特定类实例化的类(如果可能的话,通过make_unique)
- 如何创建一个空的全局类并在启动时实例化它
- 我有一个对象,它将在整个程序的持续时间内实例化,但一个类成员不会,我应该动态分配它吗?
- 使用动态实例化的对象填充矢量的快速方法
- C++使用宏进行动态实例化
- 使用动态布尔变量实例化模板
- 使用标准类型的动态类型信息实例化标识符
- 有没有办法在C++中动态实例化"custom"类
- 显式实例化模板的动态使用
- 抽象类实例的动态初始化
- 只有当类重写方法时,在动态加载的共享库中实例化的类才会丢失XCode 4.3/4.4 typeinfo
- 动态实例化类,然后立即将其删除
- 类模板的动态实例化是否被视为显式或隐式
- 在使用包含类的动态实例化后调用 c++ 重载运算符 [] 似乎不起作用
- 动态和顺序命名和实例化小部件qt
- 动态实例化和初始化结构
- C++向量元素是否动态实例化
- 功能与安全/静态与动态实例化
- 如何从另一个实例的类型动态实例化新实例?C++