我有一堂课叫Time
. 只有两个私有成员:int hours
和int minutes
。公共访问说明符仅包含加法、减法等功能。
但是有一个特定的功能不符合我想要的方式。它public
在类中声明。
这样它编译:
Time Time::operator*(const int &mult)
{
minutes = minutes*mult;
hours = hours*mult + minutes/60;
minutes %= 60;
return *this;
}
但是,如果参数不是 na int
,而是 afloat
或double
怎么办?我想使用模板是最好的选择,而不是重载函数:
template <class T> Time Time::operator*(const T &mult)
{
minutes = int(minutes*mult);
hours = int(hours*mult) + minutes/60;
minutes %= 60;
return *this;
}
但是,以这种方式编写会产生编译错误:
error LNK2019: unresolved external symbol "public: class Time __thiscall Time::operator*<int>(int const &) " (??$?DH@Time@@QBE?AV0@ABH@Z) referenced in function _main
这意味着我不能将运算符重载与模板一起使用或什么?
谢谢
罗伯特