У меня есть класс state
, который имеет назначение / конструктор перемещения. Копирование / конструктор установлены на delete
.
Я запутался, почему в следующей функции (которая возвращает state
объект) компилируется и работает так:
state propagator::PROPAGATE(date & TargetDate)
{
jmethodID jmid_PROPAGATE = ENV->GetMethodID(this->jcls_PROPAGATOR, "propagate", "(path/to/date;)path/to/state;");
jobject jobj_PROPAGATED_STATE = ENV->CallObjectMethod(this->jobj_PROPAGATOR, jmid_PROPAGATE, TargetDate.get_DATE_JOBJECT());
state PROPAGATED_STATE(this->ENV);
PROPAGATED_STATE.set_STATE_JOBJECT(jobj_PROPAGATED_STATE);
return PROPAGATED_STATE;
//state * PROPAGATED_STATE = new state(ENV);
//PROPAGATED_STATE->set_STATE_JOBJECT(jobj_PROPAGATED_STATE);
//return *PROPAGATED_STATE;
}
но жалуется, что конструктор копирования был удален, когда я пытаюсь это сделать:
state propagator::PROPAGATE(date & TargetDate)
{
jmethodID jmid_PROPAGATE = ENV->GetMethodID(this->jcls_PROPAGATOR, "propagate", "(path/to/date;)path/to/state;");
jobject jobj_PROPAGATED_STATE = ENV->CallObjectMethod(this->jobj_PROPAGATOR, jmid_PROPAGATE, TargetDate.get_DATE_JOBJECT());
//state PROPAGATED_STATE(this->ENV);
//PROPAGATED_STATE.set_STATE_JOBJECT(jobj_PROPAGATED_STATE);
//return PROPAGATED_STATE;
state * PROPAGATED_STATE = new state(ENV);
PROPAGATED_STATE->set_STATE_JOBJECT(jobj_PROPAGATED_STATE);
return *PROPAGATED_STATE;
}
Выход компилятора:
error: use of deleted function ‘state::state(const state&)’