Вы могли бы написать что-то в форме
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
, который является еще одной альтернативой, обычный полиморфизм времени выполнения, вероятно, лучше всего подходит для большинства целей.