2013-03-04 82 views
1

我有一個矢量向量的整數,並且矢量有獨特的長度。我想分配一個索引 - 整數我到整數。例如,如果矢量V包含2個矢量,並且第一矢量V.at(0)是長度2,並且第二矢量V.at(1)是長度4,則索引3將對應於第一矢量第二個向量,V.at(1).at(0)。Const正確性 - 如何訪問C++中的向量元素?

我得到的錯誤,我懷疑是與const正確性有關。我該如何解決它?

Class A{ 
... 
} 

    A func(int i) const { 
    int j = 0; 
    int sum = 0; 
    int u = 0; 

    // stop when pass by the j-th vector which i is found 
    while (sum < i){ 
     sum = sum + V.at(j).size(); 
     ++j; 
    } 

    // return the position 
    u = V.at(j).at(i-sum); 
    return A(std::make_pair<j, u>); 
    } 

錯誤消息:

error: the value of 'j' is not usable in a constant expression 
    return A(std::make_pair<j, u>); 
            ^
note: 'int j' is not const 
    int j = 0; 
      ^
error: the value of 'u' is not usable in a constant expression 
    return A(std::make_pair<j, u>); 
             ^
             ^
note: 'int uid' is not const 
    int u = V.at(j).at(i-sum); 
+0

錯誤在哪裏,它們是什麼? – 2013-03-04 23:33:26

+0

'V'是'A'的成員? 'func'是否是'A'的成員函數?如果不是,它不能'const' – 2013-03-04 23:34:08

+0

'Class'不是一個關鍵字 – 2013-03-04 23:34:28

回答

4

應該是括號,不尖括號:

return A(std::make_pair(j, u)); 

尖括號是模板參數僅可類型和常量。這就是爲什麼編譯器抱怨變量不是常量。

+0

這真是愚蠢的我。謝謝! – Pippi 2013-03-04 23:48:22