在從基類模板類派生的類中,我重寫了方法createType()
。當我嘗試訪問派生類的createType(int)
時,編譯器說它不存在。爲什麼?從模板基類中覆蓋方法時的問題
template <class T>
class BaseClass
{
public:
virtual T createType(){ return T(); }
virtual T createType(int){ return T(); }
};
class Point
{
public:
float x, y;
};
class PointFactory : public BaseClass<Point>
{
public:
virtual Point createType() { return BaseClass::createType(); }
};
int main()
{
PointFactory pf;
auto p = pf.createType(5); // error here
return 0;
}
我得到的錯誤是
錯誤C2660: 'PointFactory :: createType':函數不接受1個參數
什麼是實際的錯誤信息? – NathanOliver
請編輯您的問題,以包含*完整*錯誤信息,完整,未經編輯,並附帶任何可能的信息說明。 –
如果您覆蓋,您應該使用'override'。 –