I have a state
class which has a move assignment/constructor. The copy assingment/constructor are set to delete
.
I am confused why in the following function (which returns a state
object) compiles and runs fine like this:
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;
}
but complains that copy constructor has been deleted when I try this:
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;
}
Compiler output:
error: use of deleted function ‘state::state(const state&)’