Re: Помогите разобраться
От: DanilB Россия  
Дата: 20.08.03 04:06
Оценка: :)
Здравствуйте, -newbie-, Вы писали:

N>При вызове "aaa.NewX(77)" (см. ниже) для temp деструктор почему-то вызывается дважды в результате программа выдаёт ошибку когда пытается второй раз удалить *X.

N>Может кто подскажет как написать это правильно. (компилировалось на MS VC++ v7)

N>class A

N>{
N>public:
N> A() { X = new int; }
N> ~A(){ delete X; }
N> A NewA(int a);
N> int *X;
N>};

N>A A::NewA(int a)

N>{
N> A temp;
N> *(temp.X) = a;
N> return temp;
N>}

N>main()

N>{
N>A aaa;
N>aaa.NewA(77);
N>}

Попробуй в деструкторе
~A(){if(X) {delete X; X = NULL;} }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.