次の方法で共有


コンパイラ エラー C2990

'class' : 非クラス型は、クラス型として既に宣言されています

非ジェネリック クラスまたは非テンプレート クラスは、ジェネリック クラスまたはテンプレート クラスを再定義します。 ヘッダー ファイルの競合を確認します。

次の例では C2990 が生成されます。

// C2990.cpp
// compile with: /c
template <class T>
class C{};
class C{};   // C2990

C2990 は、ジェネリックを使用する場合にも発生することがあります。

// C2990b.cpp
// compile with: /clr /c
generic <class T>
ref struct GC;

ref struct GC {};   // C2990

C2990 は、Visual Studio 2005 の Microsoft C++ コンパイラでの重大な変更によって発生することもあります。コンパイラでは、同じ型の複数の宣言がテンプレートの指定と同じであることを要求するようになりました。

次の例では C2990 が生成されます。

// C2990c.cpp
// compile with: /c
template<class T>
class A;

template<class T>
struct A2 {
   friend class A;   // C2990
};

// OK
template<class T>
struct B {
   template<class T>
   friend class A;
};