Передача 2D вектора по ссылке

Некоторое время я не касался c ++, и я только что столкнулся с очень странной проблемой при передаче 2D вектора по ссылке, это описано в main функция:

class Solution {
public:
vector<vector<int> > permute(vector<int> &num) {vector<vector<int> > result;
//I intentionally omit the codes for permutation,
//only pushing the original one to the result
result.push_back(num);

return result;}

//print the permutation, I want to pass by referrence
void printPerm(vector<vector<int> >  &result) {

for(int i=0; i<result.size(); i++) {

for(int j=0; j<result[i].size(); j++) {

cout << result[i][j]<<" ";
}
}

}

};

int main() {

vector<int> old;
old.push_back(1);
old.push_back(2);
old.push_back(3);

Solution sol;

//this gives me error for no matching function
//call, candidate argument doesn't match
sol.printPerm((sol.permute(old)));

//but the one below works!

vector<vector<int> > result = sol.permute(old);

sol.printPerm(result);}

1

Решение

Вам нужно добавить const привести к разрешению привязки к rvalue

 void printPerm(const vector<vector<int> >  &result)
//             ^^^^^^
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector