Неверная ошибка конструктора в C ++

0

Я пытаюсь скомпилировать код 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;

Я не знаю, что не так с кодом и что означает ошибка? Может кто-нибудь, пожалуйста, помогите.

  • 1
    Похоже, ваш компилятор не поддерживает C ++ 11.
  • 1
    1) вы скомпилировали с включенной поддержкой C ++ 11? 2) ссылки на постоянные значения довольно бессмысленны.
Показать ещё 3 комментария
Теги:

2 ответа

3
Лучший ответ

const CLM&& other является ссылкой на r-значение. Это новые дополнения к C++ из стандарта C++ 11. Добавьте -std=C++11 (или -std=C++0x если вы используете старый компилятор, проверьте документацию) к вызову вашего компилятора.

  • 0
    Принимается как ответ, так как на него ответили первыми. @Ivaylo Strandjev Спасибо за ваш ответ тоже и вашу ссылку.
1

Вы используете && которая является ссылкой rvalue, и она имеет смысл только в c++11. Таким образом, вы должны сообщить своему компилятору, что вы используете c++11. В GCC вы это делаете, передавая -std=c++11

Ещё вопросы

Сообщество Overcoder
Наверх
Меню