salam
j'ai réalisé deux classes fac et mip sous linux dans les fichiers suivants:
fac.hpp
fac.cpp
mip.hpp
mip.cpp
et main.cpp
je compilé fac --> g++ -c fac.cpp --> ca passe
je compilé fac --> g++ -c mip.cpp --> ca passe
je compilé fac --> g++ -c main.cpp --> ca passe
mais lorsque je réalise l'exécutable main --> gcc -o main.o me donne des erreurs

fac.hpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
class fac
{
private:    
    int nbEtTotal;
public:
    fac();
    fac(int);
    void afficher();
};
fac.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
 
#include<iostream>
#include"fac.hpp"
using namespace std;
fac::fac()
{
	nbEtTotal=0.0;
}
fac::fac(int nbr)
{
	nbEtTotal=nbr;
}
void fac::afficher()
{
	cout<<"Le nombre total des étudiants = "<<nbEtTotal<<endl;
}
mip.hpp
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
 
#include"fac.hpp"
class mip : public fac 
{
private:	
	int nbEtTotalmip;
	float *note;
public:		
	mip();
	mip(int);
	mip tri();
	float nbEtdRss();
	float nbEtdAj();
	void afficher();		
};
mip.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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
#include <iostream>
#include "mip.hpp"
using namespace std;
mip::mip()
{
	nbEtTotalmip=0;
}
mip::mip(int nbr)
{
	nbEtTotalmip=nbr;
	note=new float[nbEtTotalmip];
	cout<<"Donnez les "<<nbEtTotalmip<<"notes (mip)"<<endl;
	for(int i=0;i<nbEtTotalmip;i++) 
	{
		cin>>note[i];
	}
}
mip mip::tri()
{
	float *notes=new float[nbEtTotalmip];
	for(int i=0;i<nbEtTotalmip-1;i++)
		for(int j=i+1;j<nbEtTotalmip;j++)
			if(note[i]<note[j])
			{
				notes[i]=note[j];
				note[j]=0.0;
			}
	for(int i=0;i<nbEtTotalmip;i++)
		note[i]=notes[i];
}
float mip::nbEtdAj()
{
	float nbEtdA=0;
	for(int i=0;i<nbEtTotalmip-1;i++)
		if(note[i]<10)
			++nbEtdA;
	return nbEtdA;
}
float mip::nbEtdRss()
{
	float nbEtdRs=0;
	for(int i=0;i<nbEtTotalmip-1;i++)
		if(note[i]>=10)
			++nbEtdRs;
	return nbEtdRs;
}
void mip::afficher()
{
	cout<<"Nombre total d'etdiant (mip) = "<<nbEtTotalmip<<endl;
	nbEtTotalmip=tri().nbEtTotalmip;
	note=tri().note;
	cout<<"Les notes dans décroissant"<<endl;
	for(int i=0;i<nbEtTotalmip;cout<<note[i++]<<endl)
	cout<<"nb d'etudiant ajournr = "<<nbEtdAj()<<endl;
	cout<<"nb d'etudiant réussir = "<<nbEtdRss()<<endl;
}
main.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
 
#include<iostream>
#include"mip.hpp"
using namespace std;
int main()
{
	int fc,mp,bg;
	cout<<"Donnez le nombre tot des etudiants de la fac : ";
	cin>>fc;
	fac fcc(fc);
	cout<<endl<<"Donnez le nombre tot des etudiants de mip : ";
	cin>>mp;
	mip mpp(mp);
	mpp.afficher();	
	return 0;
}
et voila l'erreur :
g++ -o exect main.o
main.o: In function `main':
/home/user/Bureau/controle_poo/main.cpp:9: undefined reference to `fac::fac(int)'
/home/user/Bureau/controle_poo/main.cpp:12: undefined reference to `mip::mip(int)'
/home/user/Bureau/controle_poo/main.cpp:13: undefined reference to `mip::afficher()'
collect2: ld a retourné 1 code d'état d'exécution