Здравствуйте, -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;} }