编译器错误 C2990
“class”:已声明为类类型的非类类型
非泛型或模板类重新定义泛型或模板类。 检查标头文件是否存在冲突。
以下示例生成 C2990:
// C2990.cpp
// compile with: /c
template <class T>
class C{};
class C{}; // C2990
使用 generic 时,也可能发生 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;
};
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈