考虑以下两个类:
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 ]
}
Run Code Online (Sandbox Code Playgroud)
我想将这两个类组合成一个模板类.
我怎样才能编写这样一个模板类,它将data_size的值作为模板参数,template<int data_size> struct如何?我们是否真的在c ++中使用模板用于此类目的?我知道该模板用于棘手的变量类型,但从未看到变量值的用例.
你可以写一些表格
template<int size>
struct Foo
{
// ToDo - other members here
uint8_t data[size];
};
typedef Foo<32*32> Gray;
typedef Foo<32*32*3> color;
Run Code Online (Sandbox Code Playgroud)
但是,请注意,然后比Gray及color是完全不同的类型.因此,经常不使用这种模式.一个扩展将是使用非模板基类Foo的也许是height和width成员.但除非你确实需要模板提供的编译时功能,并且不想使用constexpr哪种是另一种选择,否则常规运行时多态可能最适合大多数用途.
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |