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 : 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
class.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;
}
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;
 
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.