を戻しつつ:それがreturn
Wrapobj
に機能WrapperOfGetObj
の誤差を与えるコンパイルさ右辺値参照挙動以下のコードでは、関数から
class Myclass
{
public:
Myclass() = default;
~Myclass() = default;
Myclass(Myclass&&) = default;
Myclass& operator=(Myclass&&) = default;
Myclass(const Myclass&) = delete;
Myclass& operator=(const Myclass&) = delete;
};
Myclass GetObj()
{
Myclass obj;
return obj;
}
Myclass WrapperOfGetObj()
{
Myclass&& Wrapobj = GetObj();
return Wrapobj;
}
int main()
{
return 0;
}
。エラーがある
'のMyClass :: MyClassの(のconst MyClassの&)':それはdeleted
コピーコンストラクタを呼び出すようにしようとしていることを意味削除機能
に参照しよう。私が知っているようにWrapobj
は左辺値であり、それが返されるとき、その動作はreturn
の時に移動コンストラクタを呼び出すGetObj
方法すなわちでobj
、と同じでなければなりません。 なぜコピーコンストラクタを探しているのですか?私はここで何が欠けていますか?
明示的にrvalueを作成するには 'std :: move()'を使う必要があります。 – SingerOfTheFall