2015-11-07 34 views
2

請幫我找到問題,我完全失去了爲什麼我無法修改我的列表。正如你可以看到我沒有任何聲明爲const ..C++錯誤:指定只讀位置

下面是代碼:

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++; 
    } 
} 

提前許多感謝, 朱莉婭

+0

爲什麼你首先使用'initializer_list'?它意味着被用作代理對象。 – emlai

+0

嗨,tnx給你回答!在我的作業中,我必須從寫作可以用作Carte aCarte = {{1,1,1},{2,2,2},{3,3,3}}的結構Care開始。我試圖在我的結構中使用該矢量,但出現錯誤「無法從initializer_list轉換爲矢量」... pffff – Julia

回答

3

http://en.cppreference.com/w/cpp/utility/initializer_list

An object of type std::initializer_list<T> is a lightweight proxy object that provides access to an array of objects of type const T .

initializer_list的元素是總是const,a因此*carteRow_iteratorconst

如果您想要一個可修改的對象列表,請使用std::vectorstd::array