学校プロジェクトでは、センサーがアクティブかどうかを示すprivateプロパティactive(boolean)を持つC++でセンサークラスを実装する必要があります。 ++演算子をオーバーロードする必要があります。演算子++を使用すると、activeプロパティはtrueに設定されます。C++オーバーロード演算子++
Iは、下記(sensor.cpp)実装:私は、プログラムが実行される最後の方法を用いて(終了)を実行停止気づい
int main(int argc, char *argv[]) {
Sensor * sensor = new Sensor(1, "sample vendor");
sensor->setStatus(false);
sensor++;
std::cout << "status: " << sensor->getStatus() << std::endl;
}
:
Sensor::Sensor(int id, std::string vendor) : _id(id), _vendor(vendor) {
std::cout << "Sensor created with id: " << Sensor::getId() << std::endl;
_status = false;
}
bool Sensor::getStatus() {
return _status;
}
void Sensor::setStatus(bool status) {
_status = status;
}
Sensor& Sensor::operator++() {
Sensor result = *this;
this->setStatus(true);
return result;
}
main.cppにしsensor-> setStatus(false); main.cppにはありますが、私の端末にエラーは表示されず、コンパイラーは不平を言っていません。
誰かが私が何をやったのか、それをどのように修正して状態が真になるように修正できるのか考えていますか? sensor
がポインタであるので、予め
権利をこのような問題を解決するツールはデバッガです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。最低限、問題を再現する[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例と、その問題を再現するためのデバッガ。 –
かなりの間違いがあります。よく読む[this](http://stackoverflow.com/questions/4421706/operator-overloading)。また、ブール値の '++'はあまり意味がありません。 – juanchopanza
'Sensor result = * this;'は、センサを使用しない場合でも、一時的な(より良い: 'return * this;')参照を返さないようにするために、 'Sensor&result = * this;'にする必要があります。また、インクリメント演算子を使用して別の処理をしています。良くない。 –