PDA

Afficher la version complète : [Réglé] Programmation Objet



FLoR1aN
11/10/2005, 23h15
Je viens de me mettre à la programmation objet, mais apparement la commande
g++ -o fichier fichier.cpp n'a pas lair de prendre en compte mes
#include "mecanique.h" dans mon main.
Voivi les erreurs qu'il me met lors de la compilation :

In file included from main.cpp:2:
mecanique.h:58:7: warning: no newline at end of file
main.cpp:33:2: warning: no newline at end of file
/tmp/cczf1Pym.o: dans la fonction « main »:
/home/FLoR1aN/Programmation/fisik/main.cpp:9: référence indéfinie vers « Vecteur3d::Vecteur3d()»
/home/FLoR1aN/Programmation/fisik/main.cpp:9: référence indéfinie vers « Vecteur3d::Vecteur3d()»
/home/FLoR1aN/Programmation/fisik/main.cpp:10: référence indéfinie vers « Vecteur3d::Vecteur3d()»
/home/FLoR1aN/Programmation/fisik/main.cpp:16: référence indéfinie vers « Vecteur3d::Vecteur3d(float, float, float)»
/home/FLoR1aN/Programmation/fisik/main.cpp:19: référence indéfinie vers « piece::piece(float, Vecteur3d, Vecteur3d)»
/home/FLoR1aN/Programmation/fisik/main.cpp:24: référence indéfinie vers « Vecteur3d::Vecteur3d(float, float, float)»
/home/FLoR1aN/Programmation/fisik/main.cpp:26: référence indéfinie vers « piece::acceleration(Vecteur3d*, float)»
/home/FLoR1aN/Programmation/fisik/main.cpp:28: référence indéfinie vers « piece::deplacement(float)»
collect2: ld returned 1 exit status

Le fichier main.cpp est le suivant :

#include <iostream>
#include "mecanique.h"

using namespace std;


main(){
float g,x;
Vecteur3d acc,vect_null;
Vecteur3d forces[10];
float base_tps;
float t;
t=0;
cout<<"Hauteur de la piece?"<<endl;
cin>>x;
Vecteur3d va(t,t,x);
cout<<"Masse de la piece?"<<endl;
cin>>x;
piece p(x,va,vect_null);
cout<<"G?(9.81)"<<endl;
cin>>g;
cout<<"Base temps?"<<endl;
cin>>base_tps;
Vecteur3d f(0,0,g*p.masse());
forces[1]=f;
p.acceleration(forces,1);
while(p.position().z()>0){
p.deplacement(base_tps);
t=t+base_tps;}
cout<<"Temps de chute: "<<t<<"s."<<endl;
cin>>x;
}

A priori je pense mon code est bon, donc si quelqu'un a une idée...

galagann
12/10/2005, 11h15
C'est comme cela que tu programmes ?
Tu ne fais pas d'incrémentation !

"#include <iostream>" c'est pas "#include <iostream.h>" ?

Dudule-le-poisson
12/10/2005, 19h14
Pour ce genre de programmes sur plusieurs fichiers (qui doivent être tous compilés), il vaut mieux faire un makefile (Molodoi a fait un bon topic dessus je crois)

De mémoire, les commandes de compilation donneraient quelque chose comme :
g++ -c mecanique.cpp -o mecanique.o
g++ -c fichier.cpp -o fichier.o
g++ mecanique.o fichier.o -o mecanique

Le binaire final s'appelle alors 'mecanique'.

Mais bon, la réalisation manuelle de makefile et moi, ça fait deux (vive QMake)...

molodoi
12/10/2005, 20h28
Pour les Makefile: http://www.alionet.org/index.php?showtopic=1697

Ca simplifie vraiment la vie.

FLoR1aN
14/10/2005, 12h36
C'est bon en fait j'ai compri tout seul. Merci quand même.