mercredi 25 juillet 2018

C++ Generic wrapper class which adds extra processing for some functions

I am trying to create a wrapper class for a legacy inheritance hierarchy, which is not strictly polymorphic. And in the wrapper class, I add extra functionality for a few methods, but for many other methods, I just want to call the wrapped class method.

I was wondering if there is a way in which I can write a generic wrapper function in the wrapper class which would allow me to call the wrapped function in a normal way as if there was no wrapper class. May be I am wrong, but I didn't think overloading operator-> would work because there are some methods of the wrapped class, for which I wanted to do some processing before calling the wrapped class function (though for many others, I don't need to do that). I also had a look at Herb Sutter's wrapper pattern, (again, I might be wrong) but that would need me to have a lambda to access the wrapped function. I was wondering whether anyone had any ideas about whether this is achievable?I have placed the code @ cpp.sh/2ombu
Here instead of
wrapper->operator()([](Derived& x)
{
   x.print();
});

or

wrapper->operator->()->print();

is there someway I can have

wrapper->print();

Thanks in advance for the answers..

Aucun commentaire:

Enregistrer un commentaire