На данный вопрос уже ответили:
Не могу разобраться с перегрузкой оператора+. Хочу осуществить возможность к объекту класса (fraction) добавлять число:
fraction fr(1,5);
int x = num;
fraction result;
result = x + fr;
Текущий инстанс:
fraction& operator+=(int value)
{
this->... += value;
return *this;
}
Новый инстанс:
fraction operator+(int value) const
{
return fraction(...);
}
friend fraction operator+(int value, fraction const& f)
{
return fraction( value + f./*someoneDataMember*/);
/* return ( f + value );*/
}
Примерно так:
class fraction{
int value_;
public:
fraction(int v): value_{v}
{ }
const fraction& operator += (int lhs){
value_ += lhs;
return *this;
}
fraction operator + (int lhs) const{
fraction tmp(value_);
tmp += lhs;
return tmp;
}
}
Можно немного проще:
...
fraction operator + (int lhs) const{
return fraction (value_ + lhs);
}
...
Это если реализация простая, в общем случае предпочтительно реализовывать + через += для устранения лишнего дублирования кода.
Как можно считать в первой строке число, а во второй строку? getline видимо начинает считывать с символа \n