Erreur de compilation!
Résolu
ihssane it9ane
Messages postés
55
Date d'inscription
Statut
Membre
-
ihssane it9ane Messages postés 55 Date d'inscription Statut Membre -
ihssane it9ane Messages postés 55 Date d'inscription Statut Membre -
Bonjour,
j travaille avec dev c++ une erreur de compilation que j'ai pas compris " new types may not be defined in a return type "
l'erreur est dans la ligne "imat= new char[ strlen(i)+1];"
merci.
j travaille avec dev c++ une erreur de compilation que j'ai pas compris " new types may not be defined in a return type "
l'erreur est dans la ligne "imat= new char[ strlen(i)+1];"
merci.
Configuration: Windows Vista Internet Explorer 7.0
3 réponses
-
Salut,
est-ce que ton objet imat a été déclaré ? Est-ce que son type est (re-)connu par le compilateur ?-
voici mon code
#include<conio.h>
#include<string.h>
#include<iostream.h>
#include<stdlib.h>
#include<time.h>
class voiture
{
char * imat;
char * mod;
public:
voiture(char*,char*);
voiture(voiture&);
void afficher();
}
voiture::voiture(char *a,char *b)
{ imat= new char[strlen(a)+1];
mod= new char[strlen(b)+1];
strcpy(imat,a);
strcpy(mod,b);
}
voiture :: voiture(voiture&v)
{ imat= new char[strlen(v.imat)+1];
mod= new char[strlen(v.mod)+1];
strcpy(imat,v.imat);
strcpy(mod,v.mod);
}
void voiture :: afficher()
{
cout<<"imat"<<"\t \t \t " <<"mod"<<"\n";
cout<<imat<<"\t \t \t " <<mod<<"\n";
}
main()
{voiture v1("999","bmw");
voiture v2("9889","toyota");
}- Tu as dû oublier un point virgule juste après avoir fermé ta classe dans ton fichier *.h. Tu dois avoir :
#include<conio.h> #include<string.h> #include<iostream.h> #include<stdlib.h> #include<time.h> class voiture { char * imat; char * mod; public: voiture(char*,char*); voiture(voiture&); void afficher(); } ;
J'espère que ça va t'aider mais il me semble que ce genre de petite erreur est assez pénible et provoque des erreurs bisarres...
-
-
De rien, bon courage à toi !
-
Salut,
Ah oui, je comprends pourquoi le compilateur crie ^^.
Déjà, il faut éviter le mélange C/C++.
En C++ évite les char*, et on utilise plus volontiers la classe String. Donc, plus besoin de strcpy et compagnie.
A la fin de la définition de ta classe, effectivement, tu as oublié un point-virgule.
Le prototype de main est int main(void); et renvoie 0 lorsque tout va bien.
Et enfin, il vaut mieux inclure iostream et non iostream.h pour importer le tout dans le namespace std.
Reposte le code une fois toutes ses erreurs corrigées si ça ne compile toujours pas.
Cdlt-
-
oui j'ai ajouté le point virgule et ça marche.
pour le main ça marche sans mettre le type.
pour le iostream sans .h la compilation a reussi mais il y a un message
`cout' undeclared (first use this function) .
enfin merci pour l'interet que vous avez accordé a mon message.- pour le main ça marche sans mettre le type.
Oui, mais cela ne respecte pas la norme. Si tu veux respecter la norme, alors faut mettre int devant ;).
`cout' undeclared (first use this function) .
Oui, en incluant iostream, cout se trouve dans l'espace de nom std. Il faut donc faire std::cout.
Ou alors, mettre using namespace std; en début. Ce qui te permettra d'utiliser cout simplement. Mais à ne pas faire dans les .h, enfin, ce n'est pas une bonne pratique.
-