Bonjour a tous,
Depuis quelques temps je me suis mis au C++ et donc je rencontre un probleme,enfaite ce n est pas un probleme parce que mon code marche mais j aimerais comprendre quand meme, voila le code tout bete:
class.h
class.cpp
Code : 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 #ifndef CLASS_H_INCLUDED #define CLASS_H_INCLUDED class test{ private: int a; int b; public: test(); void affiche(); }; #endif
main.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include <iostream> #include "class.h" using namespace std; test::test():a(5), b(5) { } void test::affiche() { cout << " a = " << a << " b = " << b << endl; }
donc ma question est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include <iostream> #include "class.h" using namespace std; int main() { test a; a.affiche(); return 0; }
comment cela ce fais que en compilant avec g++ il ne m affiche aucun avertissement et aucune erreur mais sous code::blocks avec le meme code il me dit:
2 erreur:
undefined reference to 'test::test()'
undefined reference to 'test::affiche()'
donc j ai rajouter #include "class.cpp" dans le main et la ca marche , mais pourquoi cette difference? quelqu'un pourrais m expliquer?
Et puis par la meme occasion est ce que quelqu un pourrais me donner un exemple de surcharge de methode propre.Car j arrive au meme resultat mais en mettant un
return (int)a; par exemple mais c est pas propre.
PS: je suis sous ubuntu gusty.
Merci a vous.
Partager