J'essayais de suivre le code dans lequel j'ai défini copy c'tor explicitement pour résoudre le problème d'aliasing.
Mais le code génère une erreur d'exécution.Résoudre le problème d'aliasing en C++
#include<iostream>
#include<cstring>
using namespace std;
class word
{
public:
word(const char *s) // No default c'tor
{
str=const_cast<char*>(s);
cnt=strlen(s);
}
word(const word &w)
{
char *temp=new char[strlen(w.str)+1];
strcpy(temp,w.str);
str=temp;
cnt=strlen(str);
}
~word()
{
delete []str;
cout<<"destructor called"<<endl;
}
friend ostream& operator<<(ostream &os,const word &w);
private:
int cnt;
char *str;
};
ostream& operator<<(ostream &os,const word &w)
{
os<<w.str<<" "<<w.cnt;
return os;
}
word noun("happy");
void foo()
{
word verb=noun;
cout<<"inside foo()"<<endl;
cout<<"noun : "<<noun<<endl<<"verb : "<<verb<<endl;
}
int main()
{
cout<<"before foo()"<<endl<<"noun : "<<noun<<endl;
foo();
cout<<"after foo()"<<endl<<"noun : "<<noun<<endl;
return 0;
}
Quelle est l'erreur d'exécution? – TheJuice
Naveen vous a déjà montré une erreur. Un autre est que votre classe manque un opérateur d'affectation. (Google pour "règle de trois".) Pourquoi faites-vous cela de toute façon? __Pourquoi ne pas utiliser 'std :: string'? __12 – sbi
@sbi probablement devoirs :) – corsiKa