繁体   English   中英

错误:分配只读位置<unnamed> :: g_namesmap

[英]error: assignment of read-only location <unnamed>::g_namesmap

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

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 ,它将返回对与指定key_type值关联的data_type对象的引用。 在这种情况下,您的data_typeconst size_t ,因此您无法分配给它。

您需要将地图声明为:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM