- a helper function can be used to copy and allocate memory, try catch, rethrow if something is wrong in that function
template
T* NewCopy( const T* src,
size_t srcsize,
size_t destsize )
{
assert( destsize >= srcsize );
T* dest = new T[destsize];
try
{
copy( src, src+srcsize, dest );
}
catch(...)
{
delete[] dest; // this can't throw
throw; // rethrow original exception
}
return dest;
}and use it:
template
Stack::Stack( const Stack& other )
: v_(NewCopy( other.v_,
other.vsize_,
other.vsize_ )),
vsize_(other.vsize_),
vused_(other.vused_)
{
}
No comments:
Post a Comment