Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;错误:指定只读位置_C++ - Fatal编程技术网

C++ C++;错误:指定只读位置

C++ C++;错误:指定只读位置,c++,C++,请帮我找到问题,我完全不知道为什么我不能修改我的列表。如你所见,我没有声明任何内容为常量 代码如下: struct Carte { Carte(initializer_list<initializer_list<int>> iInp){} initializer_list<initializer_list<int>> aVect; }; ..... void changeValue(Carte& iCarte,

请帮我找到问题,我完全不知道为什么我不能修改我的列表。如你所见,我没有声明任何内容为常量

代码如下:

struct Carte 
{   
    Carte(initializer_list<initializer_list<int>>  iInp){}
    initializer_list<initializer_list<int>> aVect;
};


.....
void changeValue(Carte& iCarte, int iValA, int iValB)
{   
    initializer_list<initializer_list<int>> carte = iCarte.aVect;
    initializer_list<initializer_list<int> >::iterator carte_iterator;
    initializer_list<int>::iterator carteRow_iterator;

    //changing the value
    int aLocalI = 0;
    int aLocalJ = 0;

    for(carte_iterator = carte.begin();carte_iterator!=carte.end();++carte_iterator) 
    {
        if (aLocalI == iValA)
        {
            for(carteRow_iterator = (*carte_iterator).begin();carteRow_iterator!=(*carte_iterator).end();++carteRow_iterator) 
            {
                if (aLocalJ == iValB)
                {                   
                    *carteRow_iterator = 1; // ERROR HERE
                }
                aLocalJ++;
            }
        }
        aLocalI++;
    }
}
struct-Carte
{   
点菜(初始值设定项列表iInp){}
初始值设定项列表;
};
.....
无效更改值(Carte&iCarte、int-iValA、int-iValB)
{   
初始值设定项\u list carte=iCarte.aVect;
初始值设定项列表::迭代器点菜迭代器;
初始值设定项\列表::迭代器CarterRow \迭代器;
//更改值
int-aLocalI=0;
int-aLocalJ=0;
for(carte_iterator=carte.begin();carte_iterator!=carte.end();++carte_iterator)
{
如果(aLocalI==iValA)
{
for(carterrow_迭代器=(*carterrow_迭代器).begin();carterrow_迭代器!=(*carterrow_迭代器).end();++carterrow_迭代器)
{
如果(aLocalJ==iValB)
{                   
*CarterRow\u迭代器=1;//此处出错
}
aLocalJ++;
}
}
aLocalI++;
}
}
多谢各位, 朱莉娅

来自:

std::initializer\u list
类型的对象是一个轻量级代理对象,它提供对
constT
类型的对象数组的访问

初始值设定项列表
的元素总是
常量
,因此
*carterrow\u迭代器
常量


如果您想要一个可修改的对象列表,请使用
std::vector
std::array

首先为什么要使用
初始值设定项\u list
?它是用来作为一个代理对象。嗨,tnx为你回答!在我的作业中,我必须从写结构Care开始,它可以作为Carte acart={{1,1,1},{2,2,2},{3,3,3}在main中使用。我试图在我的结构中使用向量,但出现错误“无法将初始值设定项列表转换为向量”。。。pffff