شب بخیر.
من کلاسی را به صورت زیر نوشتم و در آن عملگر حمع را overload کردم نمی دونم چرا زمانیکه کامپایل می کنم با خطایه زیر مواجه میشم.
error C2678: binary '+' : no operator found which takes a left-hand operand of type 'int' (or there is no acceptable conversion)
template <class T>
class Range_{
public :
Range_(const T &start,const T &end):start_(start),end_(end){}
Range_ operator+(const T &value)const;
Range_ operator-(const T &value)const;
T start_;
T end_;
private:
};
typedef Range_<int> BhRange_i;
typedef Range_<float> BhRange_f;
template <class T>
Range_<T> Range_<T>::operator+(const T &value)const{
return Range_<T>(this->start_ + value,this->end_ + value);
}
template <class T>
Range_<T> Range_<T>::operator-(const T &value)const{
return Range_<T>(this->start_ - value,this->end_ - value);
}
int main()
{
BhRange_i a(10,20);
BhRange_i b(100,200);
a = 20 + b;
}