本文档部分提到的文章解释了编译器生成的一部分错误消息。
重要
Visual Studio 编译器和生成工具可报告多种类型的错误和警告。 发现错误或警告后,生成工具可做出有关代码意向的假设并尝试继续,因此,可能会同时报告更多问题。 如果工具做出错误假设,则后续错误或警告可能不适于你的项目。 纠正项目中的问题时,请始终先纠正报告的第一个错误或警告,然后在通常情况下重新生成。 一个修复程序可以解决多个后续错误。
若要在 Visual Studio 中获取有关特定诊断消息的帮助内容,请在“输出”窗口中选择该消息,然后按 F1 键。 Visual Studio 会打开该错误的文档页(如果存在)。 还可以使用页面顶部的搜索工具查找有关特定错误或警告的文章。 或者,按工具浏览错误和警告列表,并在此页面上的内容列表中键入内容。
注意
并非所有 Visual Studio 错误或警告均有记录。 在许多情况下,诊断消息将提供所有可用信息。 如果登录此页面并认为错误或警告消息需要其他说明,请使用此页面上的反馈按钮告知我们。 如果认为错误或警告是错误的,或者发现了工具集的其他问题,请在开发者社区网站上报告产品问题。 还可以在 IDE 中发送反馈并输入 bug。 在 Visual Studio 中,转到菜单栏并选择 帮助 > 发送反馈 > 报告问题,或使用 帮助 > 发送反馈 > 建议功能提交建议。 创建了一些编译程序错误主题,这些主题不是由编译程序发出的,但现在会重定向到此页面。
可以在 Microsoft Q&A C++ 论坛中找到有关错误和警告的其他帮助。 或者,在 Visual Studio C++ 开发者社区网站上搜索错误或警告编号。 还可以搜索 Stack Overflow 以查找解决方案。
有关指向其他帮助和社区资源的链接,请参阅 Visual C++ 帮助和社区。
错误消息
错误 | 消息 |
---|---|
编译器错误 C2500 | “identifier1”:“identifier2”已经是直接基类 |
编译器错误 C2501 | “identifier”:“__declspec(specifier)”只能应用于结构、联合、类或无符号位字段成员 |
编译器错误 C2502 | “identifier”:基类上的访问修饰符太多 |
编译器错误 C2503 | “class”:基类不能包含零大小的数组 |
编译器错误 C2504 | “class”:未定义基类 |
编译器错误 C2505 | “symbol”:“__declspec(modifer)”只能应用于全局对象或静态数据成员的声明或定义 |
编译器错误 C2506 | “member”:“__declspec(modifier)'”不能应用于此符号 |
编译器错误 C2507 | “identifier”:基类上的虚拟修饰符太多 |
编译器错误 C2508 | “identifier”:“__declspec(specifier1)”不能与“__declspec(specifier2)”组合 |
编译器错误 C2509 | “identifier”:成员函数未在“class”中声明 |
编译器错误 C2510 | “identifier”:“::”的左边必须是类/结构/联合 |
编译器错误 C2511 | “identifier”:在“class”中未找到重载的成员函数 |
编译器错误 C2512 | “identifier”:没有合适的默认构造函数可用 |
编译器错误 C2513 | “*type”:在“=”之前没有声明变量 |
编译器错误 C2514 | “class”:类没有构造函数 |
编译器错误 C2515 | “identifier”:“vtguard”只能应用于类声明或定义 |
编译器错误 C2516 | “class”:不是合法的基类 |
编译器错误 C2517 | “identifier”:“::”右侧未定义 |
编译器错误 C2518 | 关键字“keyword”在基类列表中无效;应为 class 名称 |
编译器错误 C2519 | “identifier”:WinRT 属性只能包含公共字段 |
编译器错误 C2520 | “class”:没有可用于隐式转换的非显式构造函数 |
编译器错误 C2521 | 析构函数/终结器不采用任何参数 |
编译器错误 C2522 | “identifier”:重载标识符不能用于“identifier1”,因为它已在“identifier2”上指定 |
编译器错误 C2523 | “class::~identifier”:析构函数/终结器标记不匹配 |
编译器错误 C2524 | “identifier”:析构函数/终结器必须有一个“void”参数列表 |
编译器错误 C2525 | “identifier”:参数“identifier1”在基函数上命名为“identifier2”,必须在已发布的实现中匹配 |
编译器错误 C2526 | “identifier1”:C 链接函数无法返回 C++ 类“identifier2” |
编译器错误 C2527 | “identifier”:不能在“function1”和“function2”上指定 DefaultOverload。 在实现过程中删除一个规范或重命名函数 |
编译器错误 C2528 | “identifier”:指向引用的指针非法 |
编译器错误 C2529 | “identifier”:对引用的引用非法 |
编译器错误 C2530 | “identifier”:必须初始化引用 |
编译器错误 C2531 | “identifier”:位域的引用非法 |
编译器错误 C2532 | “identifier”:供引用的非法修饰符 |
编译器错误 C2533 | “identifier”:构造函数不允许返回类型 |
编译器错误 C2534 | “identifier”:构造函数无法返回值 |
编译器错误 C2535 | “identifier”:已经定义或声明成员函数 |
编译器错误 C2536 | 已过时。 |
编译器错误 C2537 | “specifier”:非法的链接规范 |
编译器错误 C2538 | 已过时。 |
编译器错误 C2539 | 已过时。 |
编译器错误 C2540 | 作为数组界限的非常量表达式 |
编译器错误 C2541 | “identifier”:不能删除不是指针的对象 |
编译器错误 C2542 | “identifier”:类对象没有用于初始化的构造函数 |
编译器错误 C2543 | 应输入运算符“[]”的“]” |
编译器错误 C2544 | 应输入运算符“()”的“)” |
编译器错误 C2545 | “operator”:找不到重载运算符 |
编译器错误 C2546 | “identifier”:同时在 PIA 和非 PIA 下定义某类型时,必须先引用 PIA |
编译器错误 C2547 | “identifier”:已发布方法的所有参数都必须在声明中显式指定 |
编译器错误 C2548 | “function”:缺少参数参数的默认参数 |
编译器错误 C2549 | 用户定义的转换不能指定返回类型 |
编译器错误 C2550 | “identifier”:构造函数初始值设定项列表只能在构造函数定义中使用 |
编译器错误 C2551 | “void *”类型需要显式转换 |
编译器错误 C2552 | “identifier”:不能用初始值设定项列表初始化非聚合 |
编译器错误 C2553 | “typederived_class::function”:重写虚函数返回类型不同于“typebase_class::function” |
编译器错误 C2554 | “variable”: “constinit”仅允许在具有静态或线程存储持续时间的变量声明中 |
编译器错误 C2555 | “derived_class::function”:重写虚函数返回类型不同,且不是来自“base_class::function”的协变 |
编译器错误 C2556 | “type1class::function”:重载函数与“type2class::function”的唯一不同之处在于其返回类型 |
编译器错误 C2557 | “identifier”:没有构造函数则不能初始化私有成员和受保护成员 |
编译器错误 C2558 | 类“Class”:没有可用的复制构造函数或复制构造函数声明为“显式” |
编译器错误 C2559 | “identifier”:不能使用无引用限定符的成员函数重载有引用限定符的成员函数 |
编译器错误 C2560 | “identifier”:不能使用无引用限定符的成员函数重载有引用限定符的成员函数 |
编译器错误 C2561 | “function”:函数必须返回值 |
编译器错误 C2562 | “function”:“void”函数返回值 |
编译器错误 C2563 | 形参表不匹配 |
编译器错误 C2564 | 已过时。 |
编译器错误 C2565 | “identifier”:引用限定符对于构造函数/析构函数非法 |
编译器错误 C2566 | 条件表达式中的重载函数 |
编译器错误 C2567 | 无法在“filename”中打开元数据,possible_reason |
编译器错误 C2568 | “identifier”:无法解析函数重载 |
编译器错误 C2569 | “identifier”:枚举/联合不能用作基类 |
编译器错误 C2570 | “identifier”:联合不能有基类 |
编译器错误 C2571 | “identifier”:虚函数不能在联合“union”中 |
编译器错误 C2572 | “function”:重定义默认参数:参数 |
编译器错误 C2573 | “class”:不能删除指向此类对象的指针;该类没有“operator delete”的非位置重载。 使用 ::delete,或向类添加“operator delete (void*)” |
编译器错误 C2574 | “function”:不能声明为静态 |
编译器错误 C2575 | “identifier”:只有成员函数和基可以是虚拟的 |
编译器错误 C2576 | “identifier”:无法将新的虚拟方法引入为“public”。 请考虑将方法设置为非虚拟方法,或者将辅助功能更改为“internal”或“protected private” |
编译器错误 C2577 | “identifier”:析构函数/终结器不能有返回类型 |
编译器错误 C2578 | “class”:类型不能具有“protected”或“protected public”构造函数 |
编译器错误 C2579 | 无法解析类型“type”(偏移)。 它应在 |
编译器错误 C2580 | “identifier”:不允许使用多个版本的有默认特殊成员函数 |
编译器错误 C2581 | “type”:静态“operator =”函数是非法的 |
编译器错误 C2582 | “运算符 |
编译器错误 C2583 | “identifier”: |
编译器错误 C2584 | “class”:直接基“base_class2”不可访问;已是“base_class1”的基础 |
编译器错误 C2585 | 到“class”的显式转换不明确 |
编译器错误 C2586 | 不正确的用户定义的转换语法:非法间接寻址 |
编译器错误 C2587 | “identifier”:非法将局部变量作为默认参数 |
编译器错误 C2588 | “::~identifier”:全局析构函数/终结器非法 |
编译器错误 C2589 | “identifier”:“::”右边的标记非法 |
编译器错误 C2590 | “identifier”:只有构造函数可以有基/成员初始值列表 |
编译器错误 C2591 | ExclusiveTo 不能使用“type”作为参数。 只有“ref class”是有效的参数 |
编译器错误 C2592 | “class”:“base_class2”继承自“base_class1”,无法重新指定 |
编译器错误 C2593 | “运算符 |
编译器错误 C2594 | “operator”:从“type1”到“type2”的转换有歧义 |
编译器错误 C2595 | “identifier” WinRT 属性类型必须密封 |
编译器错误 C2596 | “identifier” WinRT 属性字段只能为“public enum class”、“int”、“unsigned int”、“bool”、“Platform::Type”、“Platform::String”或“Windows::Foundation::HResult” |
编译器错误 C2597 | 对非静态成员“identifier”的引用非法 |
编译器错误 C2598 | 链接规范必须在全局范围内 |
编译器错误 C2599 | “identifier”:不允许托管/WinRT 枚举的前向声明 |