C ++的新手,但仍然可以使用它。使用模板,我有这个:
template<typename TransportType>
Automobile<TransportType>::Automobile(std::string make)
: Transport(make)
所以我有一些都是从“运输”继承的。例如另一个是:
template<typename TransportType>
Aircraft<TransportType>::Aircraft(std::string make)
: Transport(make)
Automobile<Coach> * coach = new Automobile<Coach>("Volvo");
Aircraft<JumboJet> * jumbojet = new Aircraft<Jumbojet>("Boeing");`
我的问题是,如果我有一种传输类型,如何将其“转换”为另一种,而又不将传输类型放入运行时间。例如:
*coach = dynamic_cast<*jumbojet typeid<transporttype>>(jumbojet);`
(我不确定* jumbojet typeid的位)
我看过memcpy,但似乎无法正常工作。 (我知道,如果实际对象中有指针,而指针没有指针,则可能会出现问题。)
memcpy(*jumbojet, *coach, sizeof(coach))
最佳答案
停止尝试这样做。您无需在运行时进行投射。相反,请考虑使用虚函数(即运行时多态性)来消除在运行时将基类转换为任意派生类的需求。
关于c++ - 未知动态转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15469123/