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 :
- Pourquoi les 2 propositions ne donnent pas le même résultat ?
- Et surtout pourquoi la 2ème proposition ne compile pas ?
Merci
Partager