code::blocks et g++.. comprend pas.
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
Code:
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 |
class.cpp
Code:
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;
} |
main.cpp
Code:
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;
} |
donc ma question est :
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.