|
|
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.
|