Skip to content

Instantly share code, notes, and snippets.

@uranusjr
Created October 11, 2011 20:30
Show Gist options
  • Save uranusjr/1279325 to your computer and use it in GitHub Desktop.
Save uranusjr/1279325 to your computer and use it in GitHub Desktop.
How do I delete _object properly?
class SomeClass
{
private:
int someMember;
};
class Base
{
public:
Base()
{
_member = new SomeClass();
}
virtual ~Base()
{
delete _member;
}
protected:
SomeClass *_member;
};
class ExtendA public Base
{
public:
ExtendA() : Base()
{
_memberA = new SomeClass();
}
virtual ~ExtendA()
{
delete _memberA;
}
private:
SomeClass *_memberA;
};
class ExtendB public Base
{
public:
ExtendB() : Base()
{
_memberB = new SomeClass();
}
virtual ~ExtendB()
{
delete _memberB;
}
private:
SomeClass *_memberB;
};
class Controller
{
public:
Controller()
{
_object = 0;
}
Base *object() const
{
return _object;
}
void setObject(Base *o)
{
if (_object)
delete _object; // <====== PROBLEM
_object = o;
}
private:
Base *_object;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment