0

私はこのような特性クラスを持っています

template <int Size, typename T>
class Traits<Vector<Size, T>>
{
    enum {ElementCount = Size};
};

これは問題なく動作しますが、異なるトレイト インスタンスのサイズを比較すると、GCC で多くの警告が表示されます。そのため、代わりに使用すると思っていましたが、現在、GCC は未解決の外部情報 (つまり) が見つからないことstatic const int ElementCountについて不平を言っています。ElementCountこれをどのように解決すればよいですか?確かに、個々の組み合わせごとに Traits クラスをインスタンス化することはできません。GCC が enum ではこれを正しく認識し、const static では認識しないのはなぜですか?

4

1 に答える 1

0

異なる列挙型の値を比較しているため、多くの警告が表示されます。

比較のためにintを返す静的関数を作成できます。

template <int Size, typename T>
class Traits<Vector<Size, T>>
{
    enum {ElementCount = Size};

    static int GetElementCount() {return static_cast<int>(ElementCount);}
};
于 2012-07-20T13:30:47.660 に答える