具有删除了Move运算符的成员的类的Move运算符

时间:2019-03-16 17:36:13

标签: oop c++ operators

X类的operator=已删除

X& operator=(X const&) = delete;

Y类看起来像这样:

class Y {
private:
    X variableX;
public:
    Y(int p) {
         variableX= X(p);
    }
}

我正在尝试做这样的事情:

class Z {
private:
    Y variableY;
public:  
    void functionF() {
         variableY = Y(42);
    }
}

Z variableZ;
variableZ.functionF();

这不起作用,因为由于类operator=不存在隐式Y的情况而删除了类X的隐式Z

但是,我真的不需要任何地方移动任何东西。我想实例化类Y,在某个时候创建​​对象variableY代替成员变量X,后者又将创建对象variableY.variableX代替变量{{1 }}。不需要移动任何东西,所有东西都可以在应该存储的内存位置创建。

我可以实现这种行为吗?

0 个答案:

没有答案