Operator modulo nie może przyjmować double i int:
prog.cc:50:72: error: invalid operands of types 'const double' and 'int' to binary 'operator%'
Stonewt result = Stonewt(value.stone % i_value, value.pds_left % i_value); //??
Natomiast na dwóch intach taka operacja jak najbardziej ma sens:
Stonewt result = Stonewt(value.stone % i_value, static_cast<int>(value.pds_left) % i_value);