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

使用std::uniform_int_distribution时出现E1087错误,求技术支持

解决std::uniform_int_distribution调用匹配错误

原代码

bool random_check = FALSE;

std::string random_string(const int len) {
    const std::string alpha_numeric("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890");

    std::default_random_engine generator{ std::random_device{}() };
    const std::uniform_int_distribution< std::string::size_type > distribution{ 0, alpha_numeric.size() - 1 };

    std::string str(len, 0);
    for (auto& it : str) {
        if (random_check == FALSE) {
            it = alpha_numeric[distribution(generator)];
        }
    }

    return str;
}

报错信息

严重性 代码 描述 项目 文件 行 抑制状态 错误
(活动) E1087 没有与参数列表匹配的重载函数"std::uniform_int_distribution<_Ty>::operator() [with _Ty=size_t]"实例,且对象的类型限定符导致无法匹配

解决方法

  • 问题根源:distribution被声明为const,但std::uniform_int_distribution的operator()是非const成员函数,调用时会修改分布对象的内部状态,const修饰的对象不允许调用这类函数,因此触发匹配错误。
  • 修复方式:直接去掉distribution前的const关键字,修改后的代码片段:
std::uniform_int_distribution< std::string::size_type > distribution{ 0, alpha_numeric.size() - 1 };

内容的提问来源于stack exchange,提问作者Syna Cheats

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:55:59