Elle est ou l'erreur ??

[Résolu]
Signaler
Messages postés
121
Date d'inscription
mardi 9 août 2005
Statut
Membre
Dernière intervention
18 décembre 2007
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
Bonsoir tous le monde et merci pour votre aide,

j'essaye de m'entrainer à la programmation orientée objet en C/C++ mais la j'ai un petit probleme:

virtual


class Personnes {

protected:

int numero;

char* civ;

char* nom;

char* prenom;

public:Personnes(

int num, 
char* civ, 
char* prenom, 
char* nom);

void setNumero(
int num);

int getNumero();

void setCivilite(
char* civ);

void setNom(
char* nom);

void setPrenom(
char* prenom);

char* getIdentite();};

Personnes::Personnes(

int num, 
char* civ, 
char* prenom, 
char* nom) {setNumero(num);

setCivilite(civ);

setPrenom(prenom);

setNom(nom);

}

void

 Personnes::setNumero(
int num) {

this->numero =  num; } 

int

 Personnes::getNumero() {

return
this->numero;}

void

 Personnes::setCivilite(
char* civ) {

this->civ  = civ;}

void

 Personnes::setNom(
char* nom) {

this->nom =  nom; } 

void

 Personnes::setPrenom(
char* prenom) {

this->prenom  = prenom;}

char

* Personnes::getIdentite() {

char* Resultat;strcat(Resultat, 

this->civ);strcat(Resultat, 

" ");strcat(Resultat, 

this->prenom);strcat(Resultat, 

" ");strcat(Resultat, 

this->nom);

return Resultat;}

class

 Users: 
public Personnes {

private:

char* login;

char* mdp;

char* mail;

public:Users(

int num, 
char* civ, 
char* nom, 
char* prenom, 
char* login, 
char* mdp, 
char* mail):Personnes(num, civ, prenom, nom), login(login), mdp(mdp), mail(mail) {};

Users(

int num, 
char* civ, 
char* nom, 
char* prenom, 
char* mail):Personnes(num, civ, prenom, nom), mail(mail) {};

void setLogin(
char* login);

char* getLogin();

void setMdp(
char* mdp);

void setMail(
char* mail);

char* getMail();};

int

 main() {Users *user;

user = 

new Users(0, 
"M", 
"GADHI", 
"Karim", 
"gg); printf(

"%s \n", user->getIdentite());system(

"PAUSE"); }



et ça marche pas,
merci de votre aide

11 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
virtual





class


<== ca existe en C++ ? si oui, j'ai JAMAIS vu.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Oui virtual class ca n'existe pas
Et aussi tu oublies de refermer une guillement vers la fin

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Peus-tu donner l'erreur générer svp ,cela serait tout de même d'une grande aide lol.
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
(0,

"M"
,

"GADHI"
,

"Karim"
,

"gg); <<==== !!!!!!!!!!!
Messages postés
252
Date d'inscription
vendredi 10 juin 2005
Statut
Membre
Dernière intervention
5 septembre 2006
1
>char


* Resultat;
>strcat(Resultat,



this


->civ);






Ca ne risque pas de fonctionner avec un pointeur non alloué..
Messages postés
121
Date d'inscription
mardi 9 août 2005
Statut
Membre
Dernière intervention
18 décembre 2007

Merci à vous tous pour votre reponse,

j'ai un peu mélangé entre le java et le c++, plus des fautes de frappes.

merci
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
J'ai pas le souvenir de virtual class en java non plus...

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
121
Date d'inscription
mardi 9 août 2005
Statut
Membre
Dernière intervention
18 décembre 2007

c'est vrai vecchio, en java on dit "abstract"
mais j'ai pas trouvé en C++ que "virtual",
est ce qu'on peut déclarer une classe en C++ comme "abstract" ?
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
En C++ ca revient a une classe virtuelle pure, ca veut dire qu'elle contient une méthode virtuelle pure (non définie). Cette méthode ressemblera a ca:
virtual int f() = 0;
La classe contenant cette méthode n'est donc pas instanciable, comme une abstract en java

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
121
Date d'inscription
mardi 9 août 2005
Statut
Membre
Dernière intervention
18 décembre 2007

et est ce qu'il suffit de déclarer une seule methode d'une classe comme "virtual" pour avoir toute la classe "virtual" ou on est oblige de déclarer toutes les methodes "virtual" ??
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Une seule suffit. Mais c'est le = 0 qui est important (le virtual signifie que la fonction peut être redéfinie dans une sous-classe)

_____________________________________
Un éditeur de ressources gratuit pour Windows