オブジェクトにPODタイプがない限り、これは未定義の動作です。そして
ユーザー定義の代入演算子は、それがPODでないことを意味します。そして
実際には、いくつかの理由で失敗する可能性があります。
可能な解決策の1つは、データでネストされたPODタイプを定義することです
メンバーに割り当て、単純に割り当てます(例:
class C
{
struct Data { /* ... */ };
Data myData;
public:
C& operator=( C const& other )
{
myData = other.myData;
return *this;
}
};
もちろん、それはあなたが常に各メンバーを参照する必要があることを意味します
単純に x
ではなく myData.x
として指定します。