Невозможно глубокое копирование одного объекта класса в другой;
У меня есть объект класса геометрии
class Geometry
{
public:
std::string stdstrType;
bool bValid;
public:
Geometry()
{
stdstrType = "NO_TYPE";
bValid = false;
}
Geometry( std::string strType , bool bValue )
{
stdstrType = strType;
bValid = bValue;
}
Geometry(const Geometry &g)
{
stdstrType = g.stdstrType;
bValid = g.bValid;
}
~Geometry()
{
qDebug() << "Geometry destructor called";
}
virtual void draw();
bool isValid();
void setValidState(bool bState);
virtual void Init();
std::string GetName();
};
У меня есть контейнер класса
class Container
{
private:
std::string stdstrContainerName;
std::string stdstrPluginType;
Geometry* Geom;
public:
Container();
Container(std::string, std::string, Geometry* geometry = nullptr);
Container(const Container& obj);
~Container();
std::string GetName();
std::string GetType();
void SetName(std::string stdstrName);
Geometry* GetGeometry();
void SetGeometry(Geometry* Geom);
};
Container::Container(std::string strName, std::string strType, Geometry*
geometry) : Geom(geometry)
{
stdstrContainerName = strName;
stdstrPluginType = strType;
}
Container::Container(const Container& obj) {
stdstrContainerName = obj.stdstrContainerName;
stdstrPluginType = obj.stdstrPluginType;
Geom = new Geometry;
*Geom = *obj.Geom; // This Line gives error
}
, поскольку объект-контейнер имеет элемент данных с указателем геометрии, а область действия объекта геометрии короче, чем у объекта-контейнера.
поэтому я хочу сделать объект геометрии глубокого копирования внутри объекта контейнера.
Это строка в конструкторе копирования, которая выдает мне ошибку
*Geom = *obj.Geom; // This Line gives error
Вот как я инициализирую объект-контейнер
Geometry* geom = new Geometry;
Container* cont = new Container("Group", "NONE", geom);