From: Thorsten Ottosen (tottosen_at_[hidden])
Date: 2006-01-05 15:58:21
Thorsten Ottosen wrote:
> Sam Partington wrote:
>>It seems to me that the first has the disadvantage of making it
>>relatively easy to provide an incorrect cloner that allows slicing.
>>However this is relatively easy to avoid by making your hierarchy
>>noncopyable, (Perhaps a way around this is to remove the default
>>implementation of new_clone?)
> It's not very sensible to make the hierarchy copyable, because you
> can run into slicing in other places then.
> As for the default, then I've been thinking about this too. It still
> won't catch that one missed a clone() function longer down the hiararchy.
Hm...I just came to think that a little assertion might help us out here:
inline base* new_clone( const base& b )
base* res = b.clone();
assert( typeid(*res) == typeid(b) );
That should catch any problems. I can even put this inside the
clone-allocator, so the user don't have to specify this.