のためにパラメータ化?テンプレートは、私はこれをしたい列挙型
template <enum T> class ATemplate {};
あなたが探していることはコンラートはに答え何でない限り、それはテンプレートのために有効な構文ではありませんので、私はこのエラー
error: use of enum ‘T’ without previous declaration
のためにパラメータ化?テンプレートは、私はこれをしたい列挙型
template <enum T> class ATemplate {};
あなたが探していることはコンラートはに答え何でない限り、それはテンプレートのために有効な構文ではありませんので、私はこのエラー
error: use of enum ‘T’ without previous declaration
を取得します。
typename
またはclass
のいずれかを使用する必要があります。
次はそれを行う必要があります。
enum X
{
a
};
template <typename T> class ATemplate {};
ATemplate<X> A;
[OK]を、私は他の型が引数として使用されている例を見たと思っていたが、今はそれらがかなり異なっていることを認識している(非型パラメータ) – nishantjr
本当に。 'template
はい、その場合、列挙型ではなく、列挙型の値を使用してインスタンス化されます(私は思う)。 'ATemplate
enum T
が事前に宣言されている場合、それは動作します:
enum T {
foo, bar
};
template <enum T> // or simply `template <T>`
class ATemplate { };
int main() {
ATemplate<foo> x;
}
しかし、変数名T
から判断すると、これはあなたが望むものではありません。あなたが望むものを推測するのは難しいので、より具体的にする必要があります。
質問が更新されました – nishantjr
まあ、以前に宣言された列挙型のTですか? –
あなたは 'class NetworkMsg:Message'を意味しますか? –
CapelliC