というクラスがありTime
ます。int hours
プライベート メンバーはとの 2 つだけint minutes
です。public アクセス指定子には、加算、減算などの関数のみが含まれます。
しかし、私が望むように動作しない特定の機能があります。public
クラスで宣言されています。
このようにコンパイルします:
Time Time::operator*(const int &mult)
{
minutes = minutes*mult;
hours = hours*mult + minutes/60;
minutes %= 60;
return *this;
}
しかし、引数が naint
ではなくfloat
、またはの場合はどうなる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
テンプレートで演算子のオーバーロードを使用できないことを意味しますか?
ありがとう
ロバート