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/

10-10 20:16