Les classes en devc++

Fermé
hektoumayo - 6 nov. 2004 à 12:48
 hektoumayo - 6 nov. 2004 à 19:22
Salut,
Voila , a chaque fois que je veux creer une classe avec devc++ il m'affiche un message d'erreur à la compilation.
Est ce que il faut mettre une spécification particuliere au début du programme pour que ça marche du genre #include<quelquechose>.

J'ai pas l'habitude de compiler avec devc++ mais je suis obligé de le faire actuellment. Alors si quelqu'un pouvaiy m'aider , ça serait vraiment sympa.

Merci d'avance.

13 réponses

il fau que tu mette a chaque debut de prog
#include<stdio.h>
ciao
0
j'ai mis #include<stdio.h> mais j'ai toujours le mm problème. Qu'est ce que tu en pense ?
0
Salut!

On peut avoir la tête du code pour déceler d'éventuelles erreurs?
0
Voici la programmation de la classe :

#include <stdio.h>
#include <stdlib.h>


class vecteur // declaration de la classe
{

private : // variables de la partie privee
float x, y, z; // coordonnees du vecteur

public : // methodes de la partie privee
vecteur(float a=0.0, float b=0.0, float c=0.0)
{
x = a;
y = b;
z = c;
}

void modifier(float a=0.0, float b=0.0, float c=0.0)
{
x = a;
y = b;
z = c;
}

vecteur operator + (vecteur & t)
{
printf("\n\n\n%f %f %f argument t (operande de droite)\n", t.x, t.y, t.z);
printf("%f %f %f donnee (operande de gauche)\n", x, y, z);
vecteur u; // variable interne au sous-programme
// 2 version possibles sans utilisation de la methode modifier ou avec :
// u.x = t.x + x;
// u.y = t.y + y;
// u.z = t.z + z;
u.modifier(t.x+x, t.y+y, t.z+z);
return u;
}

float operator * (vecteur & v)
{
printf("\n\n%f %f %f argument v (operande droite)\n", v.x, v.y, v.z);
printf("%f %f %f donnee (operande gauche)\n", x, y, z);
float prodScal;
prodScal = x*v.x + y*v.y + z*v.z;
return(prodScal);
}

void afficher()
{
printf("(%f , %f , %f) ", x, y, z);
}

};
0
bonjour ,pour résoudre ton probléme il faut dabord me donner quelle genre de classe que vous voulez créer en c++, alors je t'attends..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Voici le programme en entier. Essayé de le compiler par vous mm. Mais j'ai déja essayé ce programme sur une station de travail ( unix ) et ça marche parfaitement mais sous Xp et avec Devcpp qu'il y a un pépin.
Juste pour info , cette classe permet de creer un vecteur avec 3 coordonnés et permet de réaliser quelques opérations telles qeu afficher les differentes coordonnes , additionner 2 vecteurs , en faire le produit scalaire.

voici mon programme:

#include <stdio.h>
#include <stdlib.h>
#include<unistd.h> // pas necessaire sous windows


class vecteur // declaration de la classe
{

private : // variables de la partie privee
float x, y, z; // coordonnees du vecteur

public : // methodes de la partie privee
vecteur(float a=0.0, float b=0.0, float c=0.0)
{
x = a;
y = b;
z = c;
}

void modifier(float a=0.0, float b=0.0, float c=0.0)
{
x = a;
y = b;
z = c;
}

vecteur operator + (vecteur & t)
{
printf("\n\n\n%f %f %f argument t (operande de droite)\n", t.x, t.y, t.z);
printf("%f %f %f donnee (operande de gauche)\n", x, y, z);
vecteur u; // variable interne au sous-programme
// 2 version possibles sans utilisation de la methode modifier ou avec :
// u.x = t.x + x;
// u.y = t.y + y;
// u.z = t.z + z;
u.modifier(t.x+x, t.y+y, t.z+z);
return u;
}

float operator * (vecteur & v)
{
printf("\n\n%f %f %f argument v (operande droite)\n", v.x, v.y, v.z);
printf("%f %f %f donnee (operande gauche)\n", x, y, z);
float prodScal;
prodScal = x*v.x + y*v.y + z*v.z;
return(prodScal);
}

void afficher()
{
printf("(%f , %f , %f) ", x, y, z);
}

};



main()

{

vecteur v1(1.0, 2.0, 3.0), v2, s;
float p;

printf("\nVecteurs v1 et v2 : ");
v1.afficher();
v2.afficher();

v2.modifier(10.0, 20.0, 30.0);
printf("\n\nNouvelle valeur de v2 : ");
v2.afficher();

s = v1 + v2;
printf("\nVecteur somme v1 + v2 : ");
s.afficher();

p = v1 * v2;
printf("\nProduit scalaire v1.v2 : %f\n", p);


}
0
Hello !

La déclaration de main() n'est pas "ISO". Modifie pour retourner un entier :
int main()
{
	vecteur v1(1.0, 2.0, 3.0), v2, s;
	float p;

	printf("\nVecteurs v1 et v2 : ");
	v1.afficher();
	v2.afficher();

	v2.modifier(10.0, 20.0, 30.0);
	printf("\n\nNouvelle valeur de v2 : ");
	v2.afficher();

	s = v1 + v2;
	printf("\nVecteur somme v1 + v2 : ");
	s.afficher();

	p = v1 * v2;
	printf("\nProduit scalaire v1.v2 : %f\n", p);

	return 0;
}

Take care !
0
J'ai déclaré la fonction comme tu me l'avais dit mais ça ne marche toujours pas . Est ce que tu peux me dire si ça marche chez toi et quel compillateur tu utilise .

Merci pour tt.
0
ça marche chez moi avec Codewarrior 8 (Windows XP).

Tu peux donner les messages d'erreur ?
0
Les messages d'erreur sont les suivants:

ligne 5 : parse error before "vecteur"
ligne 6 : syntax error before '{' token
ligne 15 : `b' undeclared here (not in a function)
ligne 15 : [Warning] data definition has no type or storage class
...

Il y 35 erreurs en tout. je t'ai mise les premieres seulement. Est ce que tu conai Devcpp ? Si tu peux me conseiller un meilleur compilateur sous Xp gratuit surtout , ça serait sympa.

Merci.
0
Hello !

Remplace :
#include <stdio.h>
#include <stdlib.h> 

Par :
#include <cstdio>

Différences ?
0
Toujours les mm erreurs avec en plus " cstdio : No such file or directory".

qu'est ce que tu proposes ?
0
Il semble que ton compilateur ne comprend pas le C++ ou il interprète ton fichier comme un fichier C.
Vérifie ta configuration de projet, l'extension du fichier...
0
C'était vraiment tout con . En fait qu'en j'enregistrais mon fichier, je mettais nomfichier.c au lieu de nomfichier.c++ . Comme tu l'a dii le compilateur croyait que c'était un fichier c.

En tout cas , merci beaucoup. t'é un bon!!
Ciao
0