Bonjour,
Je souhaite réaliser un wrapper autour de classe diverses.
J'ai un soucis lors de la surcharge de "->".
Je souhaite arriver à ceci :
Mais la dernière ligne pose problème : has no member "getName".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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();
La ligne suivante fonctionne bien :
Néanmoins, je souhaite avoir un accès normal (->) aux fonctions pour utiliser le wrapper comme si c'était la classe originale.
Code : Sélectionner tout - Visualiser dans une fenêtre à part qDebug() << w->operator ->()->getName();
Est ce une option particulière pour la compilation qui manque?
Voici la classe wrapper:
Et la classe Test; tres simple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; };
Merci pour vos éclaircissements.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; };
Partager