01net    Web


Actuellement en ligne : 504 Utilisateurs dont 23 dans Programmation et développement >S'inscrire      >S'identifier      >Recherche      >Aide  
modéré par A.Ouloube, Zplay, Beno@  
01net > Forum de 01net > Programmation et développement > C/C++
> allocation mémoire dans une classe
Passionné(e) d'internet, de logiciels, de forums ? 01net recrute...
Auteur
Message
 
<     1       >
Kittybeme
  
   
      ?   @     Posté le 14/03/2008 21:20:35  
Voter pour ce message
Bonjour,
voilà je suis bloquée alors je vais mettre l'énoncé de tout ce que je veux faire. Je suis débutante.

Voilà, je souhaite écrire une classe Chaine qui me permet de manipuler et de créer une chaine de caractères.

Dans cette classe Chaine j'ai deux propriétes:

- longueur de ma chaine (entier)
- adresse d'une zone allouée dynamiquement(pointeur sur caractères)

Ensuite, voici mes méthodes:

-chaine() qui initialise une chaine à vide
-chaine(char *) qui initialise la chiane passée en argument
-operator =
-operator ==
-operator + qui permet de concaténer deux chaines de caractères
-operator[] qui permet d'accéder à un caractère de rang donné par une chaine de caractère
-affiche () qui permet l'affichage d'une chaine de caractères

Voici ce que j'ai commencé en prenant note des critiques:

#include <iostream>

class Chaine
{
private :

int m_longueur;
char *m_allouee;

public :

//constructeurs et destructeurs
Chaine();
Chaine( char * texte );
~Chaine();

//opérateurs
void operator=( Chaine & ch );
int operator== (Chaine );
Chaine operator+ (Chaine ch );
char operator[](int i );
void affiche();


};

//constructeur par défaut
Chaine::Chaine()
{
m_longueur = 0; // taille de base
m_allouee = new char[ m_longueur ];
}


//Chaine::Chaine(char *texte)//constructeur2
//{
//
//
//}

void Chaine::operator = (Chaine &ch)
{
m_longueur = ch.m_longueur;
m_allouee = ch.m_allouee;

}

int Chaine::operator == (Chaine ch)
{
m_longueur = ch.m_longueur;
m_allouee = ch.m_allouee;
}

Chaine Chaine::operator +(Chaine ch)
{
Chaine resultat; // création de l'objet résultat
resultat.m_longueur = m_longueur + ch.m_longueur;
resultat.m_allouee = ch.m_allouee;
return resultat;
}

char Chaine::operator [] (int i)
{
}


//destructeur
Chaine::~Chaine()
{
delete[] m_allouee;
}


void Chaine::affiche()
{
cout <<"La longueur de la chaine est de :" << m_longueur << endl;
}


int main()
{

Chaine a ("Bonjour"), b("Maria") , c,d ("Bonjour"),e;

if(a==b) cout <<"Gagne !\n";
else cout <<"Perdu ! \n";
if(a==d) cout <<"Gagne !\n";
else cout <<"Perdu ! \n";

cout <<"a:";
a.affiche();
cout <<"b:";
b.affiche();
cout <<"d:";
d.affiche();
c = a+b;
cout <<"c:";
c.affiche();

for(int i=0; c !='\0'; i++)

cout << c;
system("pause");
return 0;

}


Le problème c'est que je n'arrive pas à remplir mon deuxième constructeur. Je ne sais pas s'il est bon ou pas

Ensuite pour l'operator [](int i) je ne vois pas comment procéder ni pour void Chaine::operator = (Chaine &ch)

Merci de prendre le temps de m'aider.
<     1       >

01net > Forum de 01net > Programmation et développement > C/C++
> allocation mémoire dans une classe

Aller à :

Page générée en : 0.295s - X2board 2.2

Nous contacter | Charte de confiance | Voir notice légale

Tous droits réservés © 1999 - 2008 Groupe Tests - 01net.


Sites du réseau 01net Network : 01net - 01men - Rmc.fr - Bfmtv.fr - Radiobfm.com - TousLesPodcasts - Micro Achat - Caractere.net -
Electronique.biz - Mesures.com - Transaction.fr

Devis et Factures
Réalisez facilement en quelques minutes des devis et factures professionnels et analysez votre activité.
Conseils
Comprenez avec notre wiki, les messages d'erreur de Microsoft Windows 98, XP et Vista !