Я пытаюсь скомпилировать код C++, а ниже - фрагмент кода, я добавил ошибку ниже этого фрагмента кода.
// Move constructor
CLM(const CLM&& other)
{
this->detection_success = other.detection_success;
this->tracking_initialised = other.tracking_initialised;
this->detection_certainty = other.detection_certainty;
this->model_likelihood = other.model_likelihood;
this->failures_in_a_row = other.failures_in_a_row;
pdm = other.pdm;
params_local = other.params_local;
params_global = other.params_global;
detected_landmarks = other.detected_landmarks;
landmark_likelihoods = other.landmark_likelihoods;
patch_experts = other.patch_experts;
landmark_validator = other.landmark_validator;
triangulations = other.triangulations;
kde_resp_precalc = other.kde_resp_precalc;
}
// Assignment operator for rvalues
CLM & operator= (const CLM&& other)
{
this->detection_success = other.detection_success;
this->tracking_initialised = other.tracking_initialised;
this->detection_certainty = other.detection_certainty;
this->model_likelihood = other.model_likelihood;
this->failures_in_a_row = other.failures_in_a_row;
pdm = other.pdm;
params_local = other.params_local;
params_global = other.params_global;
detected_landmarks = other.detected_landmarks;
landmark_likelihoods = other.landmark_likelihoods;
patch_experts = other.patch_experts;
landmark_validator = other.landmark_validator;
triangulations = other.triangulations;
kde_resp_precalc = other.kde_resp_precalc;
return *this;
}
Я получаю следующую ошибку:
In file included from ../../Demo/Pack/CLM/include/CLM_utils.h:9:0,
from ../../Demo/Pack/CLM/src/CCNF_patch_expert.cpp:3:
../../Demo/Pack/CLM/include/CLM.h:170:16: error: expected ‘, or ‘... before ‘&& token
CLM(const CLM&& other)
^
../../Demo/Pack/CLM/include/CLM.h:170:24: error: invalid constructor; you probably meant ‘CLMTracker::CLM (const CLMTracker::CLM&)
CLM(const CLM&& other)
^
../../Demo/Pack/CLM/include/CLM.h:192:28: error: expected ‘, or ‘... before ‘&& token
CLM & operator= (const CLM&& other)
^
../../Demo/Pack/CLM/include/CLM.h: In member function ‘CLMTracker::CLM& CLMTracker::CLM::operator=(CLMTracker::CLM):
../../Demo/Pack/CLM/include/CLM.h:194:29: error: ‘other was not declared in this scope
this->detection_success = other.detection_success;
Я не знаю, что не так с кодом и что означает ошибка? Может кто-нибудь, пожалуйста, помогите.
const CLM&& other
является ссылкой на r-значение. Это новые дополнения к C++ из стандарта C++ 11. Добавьте -std=C++11
(или -std=C++0x
если вы используете старый компилятор, проверьте документацию) к вызову вашего компилятора.
Вы используете &&
которая является ссылкой rvalue, и она имеет смысл только в c++11
. Таким образом, вы должны сообщить своему компилятору, что вы используете c++11
. В GCC вы это делаете, передавая -std=c++11