У меня есть следующие классы
class CommonStyle
{};
class Style1 : public CommonStyle
{};
class Style2 : public CommonStyle
{};
class Style3 : public CommonStyle
{};
template<typename T> class ZStyle : public T
{
};
У меня есть объект, который может быть типом Style1, Style2, Style3.Как я могу создать объект ZStyle, унаследованный от Style1 или Style2 или Style3, зависит от предоставленного объекта?
//pseudo-code
int _tmain(int argc, _TCHAR* argv[])
{
CommonStyle* obj1 = new Style1();
CommonStyle* obj2 = new Style2();
CommonStyle* obj3 = new Style3();
ZStyle* zobj1 = create_object_inherited_from_style1(obj1);
ZStyle* zobj2 = create_object_inherited_from_style2(obj2);
ZStyle* zobj3 = create_object_inherited_from_style3(obj3);
}
Можно ли избежать dynamic_cast?