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

Langage C++ Discussion :

Où placer mes fonctions inline (.h ou .cpp) ?


Sujet :

Langage C++

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Où placer mes fonctions inline (.h ou .cpp) ?
    En théorie (d'après ce que j'ai lu sur Internet) que je fasse
    Code myfile.h : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #ifndef MYFILE_H
    #define MYFILE_H
     
    #include <QObject>
     
    class MyFile : public QObject
    {
        Q_OBJECT
     
    public:
        MyFile();
     
        void setName(const QString & name) { this->name = name; }
     
    private:
        QString name;
    };
     
    #endif
    Code myfile.cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #include "myfile.h"
     
    MyFile::MyFile()
    {
    }

    ou bien
    Code myfile.h : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #ifndef MYFILE_H
    #define MYFILE_H
     
    #include <QObject>
     
    class MyFile : public QObject
    {
        Q_OBJECT
     
    public:
        MyFile();
     
        void setName(const QString & name);
     
    private:
        QString name;
    };
     
    #endif
    Code myfile.cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include "myfile.h"
     
    MyFile::MyFile()
    {
    }
     
    inline void MyFile::setName(const QString & name)
    {
        this->name = name;
    }

    ...cela devrait faire la même chose.

    MAIS j'ai remarqué que lorsque je veux utiliser la fonction setName sur un objet qui hérite de la classe MyFile alors les deux proposition ci-dessus ne donnent pas le même résultat, à savoir :
    • La première solution compile bien.
    • La deuxième provoque une erreur de compilation :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      debug/softpart.o: In function `ZN8SoftPart14setFromINIFileER9QSettings':
      D:/Qt/Projets/toto/toto/titi/softpart.cpp:27: undefined reference to `MyFile::setName(QString const&)'
      collect2: ld returned 1 exit status
      mingw32-make[1]: *** [debug\toto.exe] Error 1
      mingw32-make[1]: Leaving directory `D:/Qt/Projets/toto/toto'
      mingw32-make: *** [debug] Error 2


    J'ai donc deux questions :
    1. Pourquoi les 2 propositions ne donnent pas le même résultat ?
    2. Et surtout pourquoi la 2ème proposition ne compile pas ?


    Merci
    Dernière modification par Invité ; 14/08/2009 à 14h37.

Discussions similaires

  1. placer mes fonctions dans un fichier .c
    Par gastoncs dans le forum C
    Réponses: 2
    Dernier message: 29/04/2012, 01h49
  2. Où placer mes fonctions
    Par ulquiorra dans le forum POSIX
    Réponses: 27
    Dernier message: 26/06/2008, 13h53
  3. Mettre mes fonctions dans un meme script
    Par sparrow dans le forum Langage
    Réponses: 4
    Dernier message: 25/03/2006, 01h26
  4. Fonctions inlines et fichiers .lib
    Par michhh dans le forum C++
    Réponses: 3
    Dernier message: 05/07/2005, 03h09
  5. [EJB & WebServices] Où placer mes Facade et WS EndPoint?
    Par mauvais_karma dans le forum Services Web
    Réponses: 12
    Dernier message: 25/05/2005, 16h24

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