У меня необычная проблема в большой системе, где по разным причинам мне, возможно, придется использовать такую конструкцию:
class Item
{
int mID;
int mID2;
...
int mIDn;
public:
Item();
Item(const Item& Other);
Item& operator=(const Item &Other);
};
class ItemExtension : public Item
{
// some data
public:
ItemExtension(const Item &Other) : Item(Other) {}
ItemExtension(const ItemExtension &Other);
ItemExtension& operator=(const ItemExtension& Other);
};
// client code
Item *Myitem = ItemList.ReleaseItem(index); // ownership transferred and an Item is removed from a list
std::auto_ptr<ItemExtension> ItemExt(new ItemExtension(*MyItem));
ItemExtList.push_back(ItemExt.release()); // store in std::vector and take ownership
Я понимаю, что здесь есть недостатки проектирования, такие как хаотическая передача указателявладение, но считается ли это действительно плохой формой для инициализации объекта производного класса с версией базового класса, если данные, которые необходимо скопировать, преимущественно содержатся в базовом классе, но вам нужны специальные функции, которые поддерживаются только в производном классе?Большое спасибо.