请考虑以下两个类:
layout.module.css
我想将这两个类合并为一个模板类。
如何编写这样一个模板类,它以data_size的值作为模板参数,例如Struct Gray
{
const int data_size = 32*32;
int width;
int height;
uint8_t data[data_size ]
}
Struct color
{
const int data_size = 32*32*3;
int width;
int height;
uint8_t data[data_size ]
}
?我们实际上在c ++中将模板用于此类目的吗?我知道模板用于处理棘手的变量类型,但从未见过变量值的用例。
答案 0 :(得分:5)
您可以写某种形式的
template<int size>
struct Foo
{
// ToDo - other members here
uint8_t data[size];
};
typedef Foo<32*32> Gray;
typedef Foo<32*32*3> color;
但是请注意,然后Gray
和color
是完全不同的类型。因此,这种模式并不经常使用。一种扩展是为Foo
和height
成员使用width
的非模板基类。但是,除非您确实确实需要模板提供的编译时功能,并且不想使用constexpr
(这是另一种选择),否则常规运行时多态可能最适合大多数用途。
答案 1 :(得分:4)
是的,这是模板的一种用途:
Z
模板参数可以是一个类,但也可以是一些简单的值,例如ints。