c++ - 将不同的模板类存储在同一个容器中

标签 c++ templates

我有以下类(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/

相关文章:

templates - 调用没有尖括号的模板函数可以吗?

c++ - ECS序列化

c++ - 基于范围的对 <Iterator,Iterator>

c++ - typedef 具有所有默认参数的模板

C++:将指向一个对象的成员函数的指针存储在另一个对象中

c++ - 编译器何时可以推断模板参数?

c++ - 在 C++ 中既不调用 Copy 也不调用 Move 构造函数

c++ - 如何在不增加 sizeof 的情况下将 bool 添加到结构中(如果结构中有填充)?

c++ - 在没有 std::merge 的情况下合并两个 STL 容器

javascript - 非常简单的 Javascript 模板