我有以下类(class):
template<unsigned int offsetX, unsigned int offsetY>
class myClass {
//several int and floats that are computed with offsetX and offsetY
//and other stuff
}
无论模板参数是什么,它的大小都是一样的。 我可以将 myClass<1,1> 和 myClass<0,0> 等的实例存储在同一个容器中吗?我知道当模板化的东西是一个类时这是不可能的,但在这种情况下类的布局总是相同的
编辑:我知道我可以将 offsetX 和 offsetY 发送到类的构造函数并且没有模板,但在这种情况下它们在编译时已知
最佳答案
为您的模板定义基类,所有这些常见的整数和 float 都将放置在该基类中。
仅将派生模板用于计算基本字段。然后你可以将你的模板实例插入到用基类定义的容器中。这称为对象切片。总的来说,这不是一件好事......
更好的做法是删除模板类并定义模板函数,该函数将完成您的模板 c-tor 已经完成的工作。
template <int x, int y> inline MyClass compute()
{…}
关于c++ - 将不同的模板类存储在同一个容器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12237040/