0

刚接触 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))

4

1 回答 1

1

停止尝试这样做。您不需要在运行时强制转换。相反,考虑使用虚函数(即运行时多态性)来消除在运行时将基类转换为任意派生类的需要。

于 2013-03-18T03:07:54.423 回答