I am building some kind of factory method which returns a DerivedClass
as a BaseClass
in the following way:
BaseClass Factory()
{
return DerivedClass();
}
Am I right, that the move constructor of the BaseClass
is used when I call that method:
BaseClass object = Factory();
Since I cannot make the move constructor of the BaseClass
virtual
, is there an other way to force the move constructor of the DerivedClass
to be taken?
Edit1: additional information - I already thought about pointers. But the thing is, I want to export the factory function in a DLL and I wanted to make it as easy as possible for the user. Standard pointers could result in memory leaks and on the other hand not everybody is familiar with smart pointers.
Edit2: As I learnd the real question was: Does polymorphism also work with return by value?
And the answer is NO.