I have a following classes in my project
class Base
{
public:
virtual ~Base(){};
}
class Der1: public Base
{
public:
virtual ~Der1(){};
}
class Der2: public Base
{
public:
virtual ~Der2(){};
}
I am holding the objects of these classes as std::shared_ptr
. I need to provide a custom deleter for all the that are either of type Base
or any of its derived types
.
The code I want in the deleter method will be doing the same thing for all these object, say
class Deleter
{
public:
void operator()( Base * b )
{
//Do something
delete b;
}
}
Instead of providing the deleter during the construction of each objects like
std::shared_ptr< Der1 > pDer1( new Der1(), Deleter() );
std::shared_ptr< Der2 > pDer2( new Der2(), Deleter() );
Is there a way to specify something like for all the shared pointers to objects of type Base or it's derived types use "Deleter" for deletion
? As deleter class is just taken in the constructor of shared_ptr how can someoone specify a deleter for a particular type?
Aucun commentaire:
Enregistrer un commentaire