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