模板成员变量的值

时间:2019-01-16 10:09:32

标签: c++ templates

请考虑以下两个类:

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 ++中将模板用于此类目的吗?我知道模板用于处理棘手的变量类型,但从未见过变量值的用例。

2 个答案:

答案 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;

但是请注意,然后Graycolor是完全不同的类型。因此,这种模式并不经常使用。一种扩展是为Fooheight成员使用width的非模板基类。但是,除非您确实确实需要模板提供的编译时功能,并且不想使用constexpr(这是另一种选择),否则常规运行时多态可能最适合大多数用途。

答案 1 :(得分:4)

是的,这是模板的一种用途:

Z

模板参数可以是一个类,但也可以是一些简单的值,例如ints。