Я меняю компилятор из Visual Studio на g ++ и имею некоторые проблемы с передачей по ссылке в аргументах функции.Rvalue ссылки в g ++
В Visual Studio, функция:
void Foo(int&a, int&b)
Так что, б модифицируются в этой функции. Поэтому я не могу использовать в г ++
void Foo(const int&a, const int &b)
А также Rvalue ссылка не допускается в моем г ++:
void Foo(int&& a, int&& b)
Так использует указатель является единственным способом, чтобы преобразовать код?
void Foo(int* a, int* b)
P/S: Это ошибка при компиляции с г ++:
error: no matching function for call to ‘Steerable::buildSCFpyrLevs(Tensor<double, 2ul>, std::vector<Tensor<double, 2ul> >&, int&, int&, int&, bool&)’
Steerable.cpp:63:100: note: candidate is:
Steerable.h:93:7: note: void Steerable::buildSCFpyrLevs(Steerable::data_ref, std::vector<Tensor<double, 2ul> >&, int, int, int, bool)
Steerable.h:93:7: note: no known conversion for argument 1 from ‘Tensor<double, 2ul>’ to ‘Steerable::data_ref {aka Tensor<double, 2ul>&}’
И заявления функции являются:
typedef Tensor<value_type,2> data_type;
typedef data_type& data_ref;
vector<Steerable::data_type>& Steerable::buildSCFpyr(Steerable::c_data_ref im, int nLevel, int nDir, int twidth, bool subsample)
линия, которая имеет ошибку:
buildSCFpyrLevs(imdft.FreqComplexFilter(toComplex(lo0mask)),pyr_freq,nLevel,nDir,twidth, subsample);
Почему не первая работа? – chris
Er, что вы пытаетесь сделать? Преобразовать код *, чтобы сделать что? – GManNickG
Что касается второго, я думаю, вы могли бы использовать 'const int &'. В противном случае вам также придется изменить вызывающий код –