По той или иной причине я вынужден предоставить как конструктор копирования, так и оператор = для моего класса. Я думал, что мне не нужно 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);
, но мне это не понравилось.
Мне кажется, мне нужно сделать более понятным, что конструктор копирования и оператор присваивания были неявно отключены классом, который я наследую. Зачем? Потому что это абстрактный базовый класс, который не следует создавать самостоятельно. Этот класс, однако, предназначен для самостоятельной работы.