出于某种原因,我不得不为我的类同时提供一个复制构造函数和一个 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);
了,但它不喜欢那样。
看来我需要更清楚地说明,复制构造函数和赋值运算符已被我继承的类隐式禁用。为什么?因为它是一个不应该单独实例化的抽象基类。然而,这个类是独立的。