This was the answer that answers my question 
What would you say to add Visitor to the mix like this
struct ExtendedNetworkReply : public QNetworkReply
{
virtual void doStuff() = 0;
// the rest
};
struct ExtendedNetworkReply : public QNetworkReply
{
virtual void doStuff() = 0;
// the rest
};
To copy to clipboard, switch view to plain text mode
struct SynchNetworkReply : public ExtendedNetworkReply
{
virtual void doStuff() {};
};
struct SynchNetworkReply : public ExtendedNetworkReply
{
virtual void doStuff() {};
};
To copy to clipboard, switch view to plain text mode
struct AsynchNetworkReply : public ExtendedNetworkReply
{
virtual void doStuff() {};
};
struct AsynchNetworkReply : public ExtendedNetworkReply
{
virtual void doStuff() {};
};
To copy to clipboard, switch view to plain text mode
and use doStuff() instead of checking tag? I guess it's more OO style 
And two more questions;
1. One can avoid all this subclassing using one dynamic property of QNetworkReply (QObject in fact) to tag replies. Which one you think is better and why?
2. If QNetworkReply is meant to be extended by inheritance and used polimorphically why doesn't it have virtual destructor?
Bookmarks