如果我有一个名为Wood的类和一个名为
    斩波器,以及接受对
    像这样的chooper

KeepWarm::burnFuel( Chopper <Wood>& wood_chopper );


我该如何转换或转换Chooper,其中CedarWood是从Wood派生的,以便KeepWarm :: burnFuel可以接受它?

回顾一下……

class Wood
{
};

class CedarWood: public Wood
{
};

template class T;
class Chopper
{
  Chopper( const T value );
};

class KeepWarm
{
  void burnFuel( Chopper<Wood>& wood_chopper );
};

Chopper<CedarWood> some_wood;

//

KeepWarm::burnFuel( some_wood ); // the troublesome line, is this kind of thing possible?

最佳答案

不,这是不可能的,因为Chopper<Wood>实际上与Chopper<CedarWood>无关。

您可以通过将burnfuel函数作为模板函数来解决此问题:

template<typename T>
void burnfuel(Chopper<T>& chopper);

关于c++ - 模版类的转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28110719/

10-10 16:33