次の方法で共有


コンパイラ エラー C2951

型宣言は、グローバル、名前空間、またはクラス スコープのみで許可されています

ジェネリック クラスまたはテンプレート クラスをグローバルまたは名前空間スコープの外部で宣言することはできません。 ジェネリック宣言またはテンプレート宣言をインクルード ファイルで行う場合は、インクルード ファイルがグローバル スコープにあることを確認してください。

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

// C2951.cpp
template <class T>
class A {};

int main() {
   template <class T>   // C2951
   class B {};
}

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

// C2951b.cpp
// compile with: /clr /c

// OK
generic <class T>
ref class GC { };

int main() {
   generic <class T> ref class GC2 {};   // C2951
}