begin process at 2012 05 30 01:57:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Problème avec les classes filles


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

Problème avec les classes filles

samedi 24 juillet 2004 à 11:16:40 | Problème avec les classes filles

gdefrance

Bonjour à tous, j'ai un problème avec une classe fille en C++, la classe mère chaine détient ses constructeurs et tout marche bien, mais avec la classe fille chaine_t dès que je veux l'initialiser avec un mot, il m'appelle d'abord le constructeur mère void et puis ensuite il m'appelle le constructeur mère (char *) mais la rien ne se passe.

Si quelqu'un pourrait élucider mon problème
Merci à tous.

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


//------------------------------------------------------------------------------
// Déclaration de la classe Mère chaine
//------------------------------------------------------------------------------

class chaine
{
// int longueur;
char *adr;
protected : int longueur;
public : chaine(); // Constructeur par défaut
chaine(char *); // Constructeur
chaine(chaine &); // Constructeur par recopie
~chaine(); // Destructeur
void operator=(chaine &);
int operator==(chaine);
chaine & operator+(chaine);
char & operator[](int);
void affiche();
};

//------------------------------------------------------------------------------
// Déclaration de la classe Fille Chaine
//------------------------------------------------------------------------------

class chaine_T:public chaine
{
int Type;
float Val;
public : chaine_T();
chaine_T(char *);
void affiche();
};

//------------------------------------------------------------------------------
// Déclaration des méthodes de la classe Mère chaine
//------------------------------------------------------------------------------

chaine::chaine(void)
{
// Construit un nouveau objet prédéfini

adr = new char;
adr = NULL;
longueur = 0;
}

//------------------------------------------------------------------------------

chaine::chaine(char *aide)
{
// construit un nouveau objet avec la chaine de caractère
// transmise
cout<<"***********"<<"\n";
// adr = new char[strlen(aide)];
// adr = NULL;
adr = aide;
longueur = strlen(aide);
cout<<"longueur = "<<longueur<<aide<<endl;
}

//------------------------------------------------------------------------------

chaine::chaine(chaine &aide)
{
// construit un nouveau objet avec la chaine de caractère
// transmise
cout<<"&&&&&&&&&&&&&&"<<"\n";

adr = aide.adr;
longueur = aide.longueur;
}

//------------------------------------------------------------------------------

chaine::~chaine()
{
// Détruit l'objet

delete adr;
}

//------------------------------------------------------------------------------

void chaine::affiche(void)
{
if (longueur != 0)
cout<<adr<<endl;
else
cout<<"La chaine est vide."<<endl;
}

//------------------------------------------------------------------------------
// Déclaration des méthodes de la classe Fille chaine
//------------------------------------------------------------------------------

chaine_T::chaine_T(void)
{
// Construit un nouveau objet prédéfini

chaine::chaine();
Type = 0;
Val = 0;

// adr = NULL;
// longueur = 20;
}

//------------------------------------------------------------------------------

chaine_T::chaine_T(char *aide)
{
cout<<"Aide = "<<aide<<endl;
chaine::chaine(aide);cout<<"long = "<<longueur<<aide<<endl;
Type = 0;
Val = 0;
}

//------------------------------------------------------------------------------

void chaine_T::affiche(void)
{
chaine::affiche();
cout<<"\nLongueur = "<<longueur<<"\nType = "<<Type<<"\nVal = "<<Val;
}

//------------------------------------------------------------------------------



//------------------------------------------------------------------------------
// Fonction principale
//------------------------------------------------------------------------------

void main()
{
// Déclaration des variables locales

chaine a("Bonjour");
a.affiche();

chaine b(a);
b.affiche();

chaine_T e("Salut");
e.affiche();

// Fin du programme attente d'une touche pour arrêter

getch();
}
samedi 24 juillet 2004 à 11:40:27 | Re : Problème avec les classes filles

djl


ca te gene pas d'ecrire des truc comme ca ?

adr = new char;
adr = NULL;

adr = aide;
longueur = strlen(aide);


a mon avis tu devrais tout refaire car c'est tres dangereux et ca tient du miracle si la classe mere fonctionne

oublie pas les methodes virtuel et surtout le destructeur virtuel
samedi 24 juillet 2004 à 11:49:56 | Re : Problème avec les classes filles

BruNews

Administrateur CodeS-SourceS
class Mystic {
...
};

ciao...
BruNews, Admin CS, MVP Visual C++
samedi 24 juillet 2004 à 11:55:34 | Re : Problème avec les classes filles

djl

ouai c'est un peu ca
samedi 24 juillet 2004 à 12:27:37 | Re : Problème avec les classes filles

gdefrance

j'ai un peu de mal à tout assimiler, je suis des cours par correspondance et s'est pas facile tout seul.
ne m'en vouler pas d'être de faire beaucoup d'erreur, je suis novice
Merci à tout ceux qui m'aide, je vais suivre vos conseil et tout recommencer.
samedi 24 juillet 2004 à 12:37:31 | Re : Problème avec les classes filles

djl

si tu veux, un bon cours sur les classes en c++
[ Lien ]

normalement dans ton constructeur tu devrais faire

chaine::chaine(const char *aide)
{

longueur = strlen(aide);
adr = new char[longueur+1];

strcpy(adr,aide);
}

dans le constructeur par defaut

chaine::chaine(void)
{
adr = 0;
longueur = 0;
}

dans l'operateur =

chaine& operator = (const chaine&c)
{
if( this == &c ) return *this;

delete[] adr;
longueur = c.longueur;
adr = new char[longueur+1];
strcpy( adr, c.adr);
return *this;
}

dans le destructeur

chaine::~chaine()
{
// Détruit l'objet

delete[] adr;
}
samedi 24 juillet 2004 à 13:29:24 | Re : Problème avec les classes filles

gdefrance

Merci djl, Je vais fouiller le site que tu m'as donné en lien qui me parrait super complet.
A+
samedi 24 juillet 2004 à 17:53:48 | Re : Problème avec les classes filles

djl

il l'est, et surtout tu peux faire confiance à ce qui est enseigné dedans


Cette discussion est classée dans : aide, chaine, void, longueur, adr


Répondre à ce message

Sujets en rapport avec ce message

recherche aide pour C++ [ par wecket2000 ] Salut,je suis en train d apprendre à programmer en C++ orienté Objet, j utilise visual C++, je ne sais pas si c est dû au logiciel ou pasmais je n arr Probleme de lecture d'un fichier x [ par Lavieillefolle ] Salut, j'aimerais savoir pourquoi, lorsque je tente de lire un fichier, avec ce code, je n'obtient qu'une boucle infinie?Code :#include #include main( Longueur de chaine (classique newbie) [ par atlas189 ] Bonjour , je débute en c++Pourriez-vous corriger mon code .Le principe est de renvoyé la longueur d'une chaine tapée au clavier .MerciBon c'est archi- Recherche chaine de caractères dans un fichier [ par Arkadius ] Bon j'ai été bcp plus explicite et précis dans mon poste précédant mais l'envoie de celui-ci à foiré, alors en bref.J'écris des chaines de caractères ajouter la longueur de la chaine à unsigned char * [ par DoudouBidou ] Bonjour, j'ai encore un problème avec une variable unsigned char * ma variable contient au maximum 255 caractere et je dois ajouter la longueur reel au secours!!! [ par serge14 ] Bonjour.je suis en sstage et je dois coder un protocole de transmission /reception de donées avecle pic 18f4550.malgré mes efforts pour comprendre les longueur tableau de chaune de caractere [ par Marco59190 ] Salut tout le monde :D J'ai un petit problème... J'ai un tableau de chaine de caractère comme par exemple : char *mot10[] = {"ordinateur","multimedia" Longueur chaine de caractère en C/C++ [ par Folcoche ] Bonjours,Je dois réaliser le jeu du pendu en Console windows, a partir du logiciel Dev C++.Je bute sur une soucis de longueur de chaine de caractère.V Aide pour le CGI en C++ [ par coubiak ] Bonjour,j'ai un petit probleme concernant les scripts en Cgi.J'ai réalise un programme de test en C++:#include #include #include using namespace std;v Probléme allocation mémoire! avec un void [ par psyko_flex ] Voila je dois controler un bandeau lumineux, voila mon probléme,c'est avec la variable TrameRecue!! je la récupére de la fonction ReceptionCom( ); mai


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 1,357 sec (4)

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