begin process at 2010 03 17 00:30:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Algorithme

 > 

Maths

 > 

n'arrive pas à utiliser ma fct affiche!!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

n'arrive pas à utiliser ma fct affiche!!

vendredi 27 mars 2009 à 18:46:35 | n'arrive pas à utiliser ma fct affiche!!

nelly77

#include<iostream>
using namespace std;

class CPersonne
{
protected:
    char* nom;
public:
    CPersonne(char* name);
    void setNom(char* name);

    void affiche();
};

CPersonne::CPersonne( char*name)

{

this->setNom(name);

}

void CPersonne::setNom( char*name)
{

    if(name)
{
    this->nom=new char[strlen(name)];
    strcpy(this->nom,name);
}

    else
    nom=NULL;
}


void CPersonne::affiche()

{
    cout<< "Nom:"<<this->nom<<endl;

}



int main(int argc,char*argv[])
{
CPersonne nom;
nom.affiche();
return 0;
}

ca m gener des erreurs alors si vs savez pourquoi j  p rien afficher merci d'avance......
vendredi 27 mars 2009 à 19:18:00 | Re : n'arrive pas à utiliser ma fct affiche!!

Chouchou182

Bonjour,

Lorsque du déclares un objet, un constructeur est appelé (pour construire l'objet). Si tu ne précises pas quel constructeur utiliser, c'est le constructeur par défaut, s'il existe, qui est choisi.
Dans ton cas, à la ligne
CPersonne nom;
tu demandes de construire un objet CPersonne en employant le constructeur par défaut. Or, il n'y a pas de constructeur par défaut, puisque tu as défini ton propre constructeur CPersonne(char*).
Il te faut donc appeler le constructeur avec un argument. Par exemple:
CPersonne nom("Nelly77");

Bonne prog,
--
Chouchou.

lundi 30 mars 2009 à 16:21:06 | Re : n'arrive pas à utiliser ma fct affiche!!

nelly77

merci pour ta reponse en fait j'essai ca comme exercice parceque ce que je  veux vraiment faire c'est celui la: mais j'ai une tonne d'erreurs jarrive à afficher ni l nom ni les autres attributs de ma classe si tu peu essayer ce serai sympa.
#include<iostream>
using namespace std;


class Cproduit
{
protected:

    char* nomProduit;
    int* etatStock;
    int* dureeFab;
    int* delaiLiv;

public:
    Cproduit(const char*nom, int*etat,const int*duree,const int*delai);
    void setNom(const char*nom);
    void setEtat( int*etat);
    void setDuree(const int*duree);
    void setDelai(const int*delai);
    void affiche();
};

Cproduit::Cproduit(const char*nom, int*etat,const int*duree,const int*delai)

{

this->setNom(nomProduit);
this->setEtat(etatStock);
this->setDuree(dureeFab);
this->setDelai(delaiLiv);
}

void Cproduit::setNom(const char*nom)
{

    if(nom)
{
    this->nomProduit=new char[strlen(nom)];
    strcpy(this->nomProduit,nom);
}

    else
    nomProduit=NULL;
}


void Cproduit::setEtat( int*etat)
{

    if(etat)
{
    this->etatStock=etat;
}

    else this->etatStock=NULL;
}




void Cproduit::setDuree(const int*duree)
{

    if(duree)
{
    this->dureeFab;
}

    else this->dureeFab=NULL;
}



void Cproduit::setDelai(const int*delai)
{

    if(delai)
{
    this->delaiLiv;
}

    else this->delaiLiv=NULL;
}

void Cproduit::affiche()

{
    cout<< "nomProduit:"<<this->nomProduit<<endl;
    cout<< "etatStock:"<<etatStock<<endl;
    cout<< "dureefab:"<<dureeFab<<endl;
    cout<< "delailiv:"<<delaiLiv<<endl;
}


int main(int argc,char*argv[])

{
Cproduit nomProduit("stylo");
Cproduit etatStock(5);
nomproduit.affiche();
etatStock.affiche();

  return 0;

}

lundi 30 mars 2009 à 18:58:59 | Re : n'arrive pas à utiliser ma fct affiche!!

Chouchou182

Salut,
Ci-dessous une version «qui compile» de ton code.
Quelques remarques:
1/ Les membres de type int de ta classe n'ont, me semble-t-il, pas besoin d'être des pointeurs.
2/ Il est bon de libérer dans un destructeur les ressources allouées dynamiquement dans le constructeur par exemple (à tout new son delete).
3/ Inutile d'employer this à toutes les sauces.

#include<iostream>
#include<cstring>
using namespace std;

class Cproduit
{
    char* nomProduit;
    int etatStock;
    int dureeFab;
    int delaiLiv;

public:
    Cproduit(const char*nom, int etat=0,int duree=0,int delai=0);
    ~Cproduit();
    void setNom(const char*nom);
    void setEtat(int etat);
    void setDuree(int duree);
    void setDelai(int delai);
    void affiche();
};

Cproduit::Cproduit(const char*nom, int etat,int duree,int delai)
{
  setNom(nom);
  setEtat(etat);
  setDuree(duree);
  setDelai(delai);
}

Cproduit::~Cproduit() {
  cout << "objet "<< nomProduit << " détruit" << endl;
  if (nomProduit != NULL) {
    delete [] nomProduit ;
    nomProduit = NULL ;
  }
}

void Cproduit::setNom(const char*nom)
{
  if(nom) {
    this->nomProduit=new char[strlen(nom)];
    strcpy(this->nomProduit,nom);
  }
  else
    nomProduit=NULL;
}

void Cproduit::setEtat(int etat)
{
  etatStock=etat;
}

void Cproduit::setDuree(int duree)
{
  dureeFab=duree;
}

void Cproduit::setDelai(int delai)
{
  delaiLiv = delai;
}

void Cproduit::affiche()
{
  cout<< "nomProduit: "<<nomProduit<<endl;
  cout<< "etatStock: "<<etatStock<<endl;
  cout<< "dureefab: "<<dureeFab<<endl;
  cout<< "delailiv: "<<delaiLiv<<endl;
}

int main()
{
  Cproduit p1("stylo", 5), p2("crayon");
  p1.affiche();
  p2.affiche();

  return 0;
}



Cette discussion est classée dans : affiche, void, name, char, cpersonne


Répondre à ce message

Sujets en rapport avec ce message

probleme sur une classe [ par NerOcrO ] Voici mon code :#include #include class Chanson //classe Chanson{ public: int Duree; char TypeDeFichier[3], Auteur[50], Titre[50], Interprete[50 PROBLEME NETSEND [ par zzzzzz ] En fait j'essaye d'envoyer un message par la fonction net send via internet a ordi qui posssede xp. Si je mjet mon ip ca marche et si je met l'ip de q pb eof en C++ le dernier element est lu 2 fois :( [ par panini21 ] salut a tousvoila g un prog qui permet de creer une 'bibliotheque de jeux'a savoir :les renseignement du jeu sont le prix, le nom, la descriptiopn et petite question mais ke j'ai besoin [ par superoi ] bon \jour je sais que c'est con mais j'ai vraiment besoin de savoir c'est pour savoir si ca existe en c ca : long (*f)(void)(char *str); et est ce Memory Pool [ par guiguikun ] Bonjour,j'ai téléchargé la partie du code source de Quake3 releasé par ID Software par curiosité.Je l'ai lu pour voir un peu comment le jeu fonctionna tableaux de chaines en argument de fonction [ par ashboody ] je dispose d'une fonction connect a laquelle je doit passer un tableau de chaine char **RegisteredChannels_Name. Pour cela je déclare mon tableau dans Pb affichage bmp envga c/asm [ par 030417 ] Bonjour à tous,Je suis en train d'essayer d'afficher un bmp en c avec asm sous dos en vga (13h) . j'utilise comme compilateur borland c++ 3.0, mais je pb avec procedure [ par bidules ] bonjour,voila mon code(simplifier) :void affiche(int numero){cout }void main(){affiche(10);}et un message d'erreur apparait lors de la compilation chui en BUGG depuis et sans reponse [ par louatiamin ] pour ceux ki ne connaisse pas TC++ 3.0(sous dos) et ne connaisse rien sur les librairie statique ou bien le mode real 16bits c est vraiment unitile d HELP ME PLEASE!!!! PROBLEME KE JE NE COMPRENDS PAS!!!!!!! [ par bouba ] Bonjour, je rencontre un gros problème dans mon programme que je n'arrive pas a résoudre,je ne comprends vraiment pas!!!1. std::string strcat2(LPSTR c


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales