我有一个整数向量的向量,向量具有唯一的长度。我想分配一个索引 - 一个整数i到整数。例如,如果向量V包含2个向量,并且第一向量V.at(0)是长度2,并且第二向量V.at(1)是长度4,则索引3将对应于第一个元素。第二个向量,V.at(1).at(0)。
我得到的错误我怀疑与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 :(得分:4)
应该是括号,而不是尖括号:
return A(std::make_pair(j, u));
尖括号用于模板参数,只能是类型和常量。这就是编译器抱怨变量不是常量的原因。