おそらくこれが必要です:
myclass myclass::operator<<(int digits) const {
myclass result;
result.value = this->value * pow(10, digits);
return result;
}
myclass myclass::operator>>(int digits) const {
myclass result;
result.value = this->value * pow(0.1, digits);
return result;
}
これによりthis
、変更されていないことが確認されるため、次のように記述する必要があります
number = number << 3;
数値を変更するため、書き込み時に
otherNumber = number << 3;
number
質問に対するコメントで要求されているように、これは変更されません。署名のconst
は、この演算子を使用するコードに、左側のオペランドが変更されないことを伝えます。
通常、ターゲット オブジェクトを直接操作する演算子もあり、これらの演算子には も含ま=
れています。技術的には、それらは対応する非代入演算子とは無関係であるため、一貫性のために適切に定義する必要があります。
myclass & myclass::operator<<=(int digits) {
this->value *= pow(10, digits);
return *this;
}
myclass & myclass::operator>>=(int digits) {
this->value *= pow(0.1, digits);
return *this;
}