Класс 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
. Ничего не нужно перемещать, все может быть создано в той области памяти, где оно должно закончиться.
Можно ли добиться такого поведения?