0

簡単な質問(理論は本当に)。値に応じてタイプが変わる変数があります。次に例を示します。

8, 16, 24, 32

そして、私はこれを次のように定義します。

uint8_t = 10; // example

しかし、その瞬間、私は「数値」を切り替えてコードを繰り返していますが、整数値を別の方法で宣言しています。お分かりのように、これは多くの無駄なコードであり、より効果的にコーディングしたいと思います。

値に応じて変数を割り当てるテンプレートを作成できるかどうか疑問に思っていますか?(それが理にかなっている場合)。

if value == 8
  uint8_t = foo;
elseif value == 16
  uint32_t
...

何かアイデアや提案はありますか?ありがとうございました :)

4

1 に答える 1

7

そのようです:

template <unsigned int N> struct IntN;

template <> struct IntN< 8> { typedef  uint8_t type; };
template <> struct IntN<16> { typedef uint16_t type; };
template <> struct IntN<32> { typedef uint32_t type; };
template <> struct IntN<64> { typedef uint64_t type; };

IntN<8>::type x = 5;

テンプレート引数は定数式である必要があります。

于 2012-09-10T13:04:28.767 に答える