IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Pb classe template avec Qt


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 258
    Par défaut Pb classe template avec Qt
    Bonjour,

    J'utilse depuis peu Qt 4.x.
    Si j'écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    template <class T>
    class MyClass :  public QTcpSocket {
    public :
    	MyClass(const T& Val = T() ,  QObject *parent = 0) : QTcpSocket(parent) {
     
    	}
    };
    Ca compile sans problème

    Si je rajoute la macro OBJECT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    template <class T>
    class MyClass :  public QTcpSocket {
     	OBJECT
    public :
    	MyClass(const T& Val = T() ,  QObject *parent = 0) : QTcpSocket(parent) {
     
    	}
    };
    J'obtiens une erreur : "expected unqualified-id before ‘<’ token" sur la ligne qui contient OBJET
    1) Je ne sais comment interpréter cette erreur
    2) Est-il possible de faire une classe template avec Qt, contenant la maco OBJECT ? Si oui comment ?

    Merci d'avance à ceux/celles qui voudront bien me faire part de leurs idées sur ce sujet

    Kim

  2. #2
    Membre émérite
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Par défaut
    Bonsoir,

    Ca ne serait pas plutôt Q_OBJECT?

    Ensuite, le mécanisme de moc ne supporte pas directement les templates. Tu ne peux pas "Q_OBJECTer" une classe template.

    (*) Il n'y a pas que la template dans la vie, il y a virtual aussi...

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 258
    Par défaut Classe template avce QT
    Bonjour,

    Merci Bretus pour ta réponse. C'était effectivement Q_OBJECT (au lieu de OBJECT), mais ça ne change pas le problème : il semble qu'il soit impossible de créer une classe template contenant la macro Q_OBJECT.
    Je ne suis pas obligé de créer une classe template, mais je trouvais que c'était la solution la plus élégante et parfaitement dans l'esprit du C++.
    Par ailleurs, la piste que tu m'as indiquée me semble très astucieuse (J'avais d'ailleurs commencé par tester le passage de SLOTS et SIGNALS en paramètres !!! ). Je vais essayer de la mettre en oeuvre.

    Encore Merci.

    Kim

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème avec classe template
    Par arthurembo dans le forum Langage
    Réponses: 2
    Dernier message: 09/02/2009, 07h46
  2. Problème avec vector de classe template :(
    Par coyotte507 dans le forum Langage
    Réponses: 7
    Dernier message: 16/04/2008, 12h40
  3. Surcharge de << avec une class Template ?
    Par elraton dans le forum Langage
    Réponses: 10
    Dernier message: 04/01/2007, 09h34
  4. Réponses: 15
    Dernier message: 21/08/2006, 01h41
  5. Probleme avec une class template
    Par lenectar dans le forum Langage
    Réponses: 2
    Dernier message: 01/03/2006, 10h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo