Problème opérateur affection
Bonjour,
j'essaye de créer une class String, mais je n'arrive pas à faire fonctionner mon opérateur d'affectation.
Je vous transmet mon code :
le . h :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
#ifndef _Sring
#define _Strng
class String {
private:
char* _string;
public:
String(); //constructeur par défaut
~String(); // destructeur
String(const String &stringACopier);
String operator=(const String &aString);
};
#endif |
et le .cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
#include "String.h"
#include <iostream>
using namespace std;
String::String(){
_string = new char();
}
String::~String(){
delete [] _string;
}
String::String(const String &stringACopier){
if( this != &stringACopier){
_string = new char[strlen(stringACopier._string)+1];
if (_string != NULL){
strcpy (_string, stringACopier._string);
}
}
}
String String::operator=(const String &aString){
if( this != &aString){
if (_string != NULL){
delete [] _string;
}
_string = new char[strlen(aString._string)+1];
if (_string != NULL){
strcpy (_string, aString._string);
}
}
return (*this);
} |
j'éspère que vous pourrez m'aider car je ne vois vraiment pas d'où vient le problème.
Car quand dans le main je fais :
Code:
1 2 3 4 5
|
String s1;
s1 ="azd"; //j'ai une erreur ici
String s2 = s1;//mais pas là |
merci d'avance et joyeuses fêtes.