模板成员变量的值

Gae*_*tan 0 c++ templates

考虑以下两个类:

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 ++中使用模板用于此类目的?我知道该模板用于棘手的变量类型,但从未看到变量值的用例.

Bat*_*eba 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;
Run Code Online (Sandbox Code Playgroud)

但是,请注意,然后比Graycolor是完全不同的类型.因此,经常不使用这种模式.一个扩展将是使用非模板基类Foo的也许是heightwidth成员.但除非你确实需要模板提供的编译时功能,并且不想使用constexpr哪种是另一种选择,否则常规运行时多态可能最适合大多数用途.