c++ 为什么在分发中出现此错误[重复]

xriantvc  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(158)
    • 此问题在此处已有答案**:

Why is std::uniform_int_distribution::operator() not const?(1个答案)
2天前关闭.

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::operator()[with_Ty = size_t]"没有与参数列表和对象匹配的示例(对象具有类型限定符,阻止匹配)<_Ty>::operator() [with _Ty=size_t]" matches the argument list and object (the object has type qualifiers that prevent a match)
有人能帮我吗?

cu6pst1q

cu6pst1q1#

uniform_int_distribution保留了一个内部状态,当您使用发行版时,该状态会更新。因此,您不能将其设置为const并使用其非const限定的成员函数,如operator()

相关问题