You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++出现C26495警告不知如何解决,附相关代码求定位问题原因

警告触发根源

C26495是Visual Studio自带的C代码规范检查(对应C核心准则type.6规则)的警告,核心要求是类的所有非静态成员变量必须在构造时完成初始化,你的代码漏了两个成员的初始化:

  • 指针数组Card* cards[13]完全没有初始化,所有元素都是野指针
  • int类型的current成员也没有初始化,值为不确定的垃圾值

你当前的构造函数只给suit赋值,剩下两个成员都处于未初始化状态,因此触发了该警告。


修复方案

推荐两种合规的修复方式:

方式1:用构造函数初始化列表完成初始化

Foundation::Foundation(char suit) : current(0), suit(suit) {
    // 把指针数组所有元素初始化为空指针
    for (int i = 0; i < 13; ++i) {
        cards[i] = nullptr;
    }
}

方式2:C++11及以上版本直接在类内加默认初始值(更简洁)

class Foundation {
    Card* cards[13] = {nullptr}; // 数组所有元素默认初始化为空指针
    int current = 0; // 默认初始化为0
    char suit;
    // 其余类成员保持原有代码不变即可
};

两种方式都能保证所有成员有确定的初始值,不会再触发C26495警告。

内容的提问来源于stack exchange,提问作者Longting Tin.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 21:33:03