C++ でクラスを別のクラスに変換したいので、テンプレート クラスを作成することにしましたが、コンパイル エラーが発生しました。エラーは次のとおりです。
"MyFooClass.h", line 10: error (etoa:4997):
function "IFoo::show(OtherClass &)" is hidden by
"MyFooClass::show" -- virtual function override
intended?
virtual std::auto_ptr<ClNewClass> show(ClOldClass &oc)
そして、ここに私のコードがあります、
//IFoo.h
class IFoo
{
public:
virtual ~IFoo(){}
protected:
virtual std::auto_ptr<OtherClass> show(OtherClass &oc) = 0;
};
//CustomFoo.h
template<typename oldClass, typename newClass>
class CustomFoo : public IFoo
{
public:
virtual std::auto_ptr<newClass> show(oldClass &oc)=0;
protected:
virtual std::auto_ptr<OtherClass> show(OtherClass &oc)
{
std::auto_ptr<OtherClass> result(show(static_cast<oldClass &>(oc)));
return result;
}
};
//MyFooClass.h
class MyFooClass : public CustomFoo< ClOldClass, ClNewClass >
{
public:
virtual std::auto_ptr<ClNewClass> show(ClOldClass &oc)
{
std::auto_ptr<ClNewClass> cnv(new ClNewClass(oc.params));
return cnv;
}
};
ありがとう。