Surcharge des fonctions d'une classe (wrapping)
Bonjour,
Je souhaite réaliser un wrapper autour de classe diverses.
J'ai un soucis lors de la surcharge de "->".
Je souhaite arriver à ceci :
Code:
1 2 3 4 5
| Test t;
Test *t = new Test();
t->setName("test value");
Wrapper<Test> *w = new Wrapper<Test>(t);
qDebug() << w->getName(); |
Mais la dernière ligne pose problème : has no member "getName".
La ligne suivante fonctionne bien :
Code:
qDebug() << w->operator ->()->getName();
Néanmoins, je souhaite avoir un accès normal (->) aux fonctions pour utiliser le wrapper comme si c'était la classe originale.
Est ce une option particulière pour la compilation qui manque?
Voici la classe wrapper:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| template<class T>
class Wrapper {
public:
Wrapper() : _o(0) {}
Wrapper(T* o) : _o(o) {}
~Wrapper() { if(_o) { delete _o; } }
T& operator* () { return *_o; }
T* operator-> () { return _o; }
protected:
T *_o;
}; |
Et la classe Test; tres simple
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| #include <QString> // de Qt
class Test
{
public:
Test();
const QString &getName();
void setName(const QString &name);
protected:
QString m_name;
}; |
Merci pour vos éclaircissements.