Было бы неплохо, если бы вы могли добавить номер строки или просто дать функцию, где она выходит из строя.Тем не менее, это, кажется, где он останавливается.
Bit plus(int newval)
{
value+=newval;
if(value>=pow(2,width))
cout<<"Overflow";
return this;
}
Дело в том, что это указатель на объект.Это означает, что это на самом деле Bit *
.Поскольку вы хотите вернуть бит, это создаст ошибку, как вы описываете.Чтобы исправить это, вы можете изменить его на:
Bit& plus(int newval)
{
value+=newval;
if(value>=pow(2,width))
cout<<"Overflow";
return *this;
}
, который будет возвращать ссылку на обновленный объект.Конечно, вы также можете вернуть Bit*
, но я бы постарался избежать ненужного использования указателей.