なんらかの理由で、クラスにコピー コンストラクターと operator= の両方を提供する必要があります。operator=
コピーctorを定義すればいらないと思っていたのですが、欲しくQList
なりました。それはさておき、私はコードの重複が嫌いなので、このようにして何か問題はありますか?
Fixture::Fixture(const Fixture& f) {
*this = f;
}
Fixture& Fixture::operator=(const Fixture& f) {
m_shape = f.m_shape;
m_friction = f.m_friction;
m_restitution = f.m_restitution;
m_density = f.m_density;
m_isSensor = f.m_isSensor;
return *this;
}
そして、好奇心から、コードの大部分がコピー ctor にあり、operator=
何らかの形でそれを利用するように切り替える方法はありませんか? 私は試しreturn Fixture(f);
ましたが、それは好きではありませんでした。
コピー コンストラクターと代入演算子が、継承元のクラスによって暗黙的に無効にされていることをより明確にする必要があるようです。なんで?これは、単独でインスタンス化するべきではない抽象基本クラスであるためです。ただし、このクラスはスタンドアロンを想定しています。