gpt4 book ai didi

c++ - 错误:分配只读位置<未命名>::g_namesmap

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:48:47 25 4
gpt4 key购买 nike

我遇到了这个问题标题中提到的错误。代码片段如下所示:

namespace
{
struct myOptVar * g_optvar = 0;

//Variable that stores map of names to index
std::map<std::string, const size_t> g_namesmap;
};

void Optimizations::generate()
{
// free current optvar structure
free(g_optvar);

//clear our names map
g_namesmap.clear();

// create new optvar structure
const unsigned int size = g_items.size();
g_optvar = (struct myOptVar*)calloc(size, sizeof(struct myOptVar));

//copy our data into the optvar struct
size_t i=0;
for (OptParamMapConstIter cit=g_items.begin(); cit != g_items.end(); cit++, i++ )
{
OptimizationParameter param((*cit).second);
g_namesmap[(*cit).first] = i; //error occurs here

...

g_namesmap 是在未命名的命名空间中声明和定义的,为什么它被认为是“只读的”?

最佳答案

因为您的 map data_type 是使用 const 限定符声明的:

std::map<std::string, const size_t> g_namesmap;

当您将 [] 运算符与 std::map 一起使用时,它会返回对与指定对象关联的 data_type 对象的引用key_type 值。在这种情况下,您的 data_typeconst size_t,因此您当然不能分配给它。

您需要将 map 声明为:

std::map<std::string, size_t> g_namesmap;

关于c++ - 错误:分配只读位置<未命名>::g_namesmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4816164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com