编译器错误 C2500 - C2599

本文档部分提到的文章解释了编译器生成的一部分错误消息。

重要

Visual Studio 编译器和生成工具可报告多种类型的错误和警告。 发现错误或警告后,生成工具可做出有关代码意向的假设并尝试继续,因此,可能会同时报告更多问题。 如果工具做出错误假设,则后续错误或警告可能不适于你的项目。 纠正项目中的问题时,请始终先纠正报告的第一个错误或警告,然后在通常情况下重新生成。 一个修补程序可能会使许多后续错误消失。

若要在 Visual Studio 中获取有关特定诊断消息的帮助内容,请在“输出”窗口中选择该消息,然后按 F1 键。 Visual Studio 会打开该错误的文档页(如果存在)。 还可以使用页面顶部的搜索工具查找有关特定错误或警告的文章。 或者,按工具浏览错误和警告列表,并在此页面上的内容列表中键入内容。

注意

并非所有 Visual Studio 错误或警告均有记录。 在许多情况下,诊断消息将提供所有可用信息。 如果在使用 F1 时登陆此页,并且认为错误或警告消息需要额外的解释,请告诉我们。 可以使用此页面上的反馈按钮在 GitHub 上提出文档问题。 如果认为错误或警告是错误的,或者发现了工具集的其他问题,请在开发者社区网站上报告产品问题。 还可以在 IDE 中发送反馈并输入 bug。 在 Visual Studio 中,转到菜单栏并选择“帮助”>“发送反馈”>“报告问题”,或者使用“帮助”>“发送反馈”>“发送建议”提交建议

可以在 Microsoft Learn Q&A 论坛上找到有关错误和警告的其他帮助。 或者,在 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 基类列表中的关键字 非法;忽略
编译器错误 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”:缺少参数 parameter 的默认参数
编译器错误 C2549 用户定义的转换不能指定返回类型
编译器错误 C2550 “identifier”:构造函数初始值设定项列表只能在构造函数定义中使用
编译器错误 C2551 “void *”类型需要显式转换
编译器错误 C2552 “identifier”:不能用初始值设定项列表初始化非聚合
编译器错误 C2553 “type derived_class::function”重写虚函数返回类型不同于“type base_class::function”
编译器错误 C2555 “derived_class::function”:重写虚函数返回类型不同,且不是来自“base_class::function”的协变
编译器错误 C2556 “type1 class::function”重载函数与“type2 class::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 “destructor”:不能声明为静态
编译器错误 C2575 “identifier”:只有成员函数和基可以是虚拟的
编译器错误 C2576 “identifier”:无法将新的虚拟方法引入为“public”。 请考虑将方法设置为非虚拟方法,或者将辅助功能更改为“internal”或“protected private”
编译器错误 C2577 “identifier”:析构函数/终结器不能有返回类型
编译器错误 C2578 “class”:类型不能具有“protected”或“protected public”构造函数
编译器错误 C2579 无法解析类型“type”(偏移)。 它应在
编译器错误 C2580 “identifier”:不允许使用多个版本的有默认特殊成员函数
编译器错误 C2581 “type”:静态“operator =”函数是非法的
编译器错误 C2582 “运算符 ”函数在“type”中不可用
编译器错误 C2583 “identifier”:“this”指针对于构造函数/析构函数是非法的
编译器错误 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 枚举的前向声明

另请参阅

C/C++ 编译器和生成工具错误与警告
编译器错误 C2000 - C3999、C7000 - C7999