On 9/26/18 4:41 PM, Chad Joan wrote:
Hi all,

I'm implementing a deep-copy method for a tree of templated class instances.  As part of this, I need some way to copy each node. I want to avoid code that does things like casting objects into byte arrays and then copying raw bytes; I want all operations to be memory safe things that I can use at compile-time.  So I planned to make all of these have default constructors and use Object.factory to at least create the correct instance type at the destination.  The classes can implement auxiliary copy methods if they need to copy anything that isn't already handled by their deepCopy method.

But I ran into a problem: Object.factory doesn't seem to be compatible with templated classes.

Object.factory is a really old poorly supported type of reflection. I would not depend on it for anything.

You are better off using your own registration system.

As far as choosing the design for your problem, you can use:

auto obj = typeid(obj).create();

which is going to work better, and doesn't require a linear search through all modules/classes like Object.factory.

If it were me, I'd probably instead implement a clone virtual method. This way if any custom things need to occur when copying the data, it can be handled.

-Steve

Reply via email to