Operator dodawania wartości z dwóch klas zwraca błędną wartość.
Ostatnio zmodyfikowano 2017-11-24 14:25
Qba777 Temat założony przez niniejszego użytkownika |
Operator dodawania wartości z dwóch klas zwraca błędną wartość. » 2017-11-19 17:21:14 Mógłby ktoś rzucić okiem i dać podpowiedź dlaczego zwraca złą wartość. Chodzi o to, że chce dodać terperaturę w C i w Kelvinach, ale operator nie przelicza kelvinów, tylko dodaje 1 do 1. Zachowuje się dokładnie jak operator dla dodawania w temp C. #include "Celsius.h" #include "Kelvin.h"
Celsius::operator Kelvin() { return Kelvin( value + 273.15 ); }
Celsius Celsius::operator +( const Celsius & r_celsius ) { return Celsius( value + r_celsius.value ); }
Celsius Celsius::operator -( const Celsius & r_celsius ) { return Celsius( value - r_celsius.value ); }
Celsius & Celsius::operator =( const Celsius & r_celsius ) { value = r_celsius.value; return * this; }
Celsius Celsius::operator +( const Kelvin & r_kelvin ) { return Celsius( * this + static_cast < Celsius >( r_kelvin.value ) ); }
Celsius Celsius::operator -( const Kelvin & r_kelvin ) { return Celsius( * this - static_cast < Celsius >( r_kelvin.value ) ); }
Celsius & Celsius::operator =( const Kelvin & r_kelvin ) { value = static_cast < Celsius >(( r_kelvin ).value ).value; return * this; }
|
|
pekfos |
» 2017-11-19 17:58:43 return Celsius( * this + static_cast < Celsius >( r_kelvin.value ) );
|
return * this + static_cast < Celsius >( r_kelvin );
|
|
Qba777 Temat założony przez niniejszego użytkownika |
» 2017-11-19 19:32:09 Po zmianie wyrzuca mi błąd, "static_cast": nie można konwertować z "const Kelvin" na "Celsius" Czyli muszę napisać jeszcze jakiś operator konwertujący "Kelvin na Celsius"? |
|
pekfos |
» 2017-11-19 20:02:30 Większość tych operatorów powinna być const. |
|
Qba777 Temat założony przez niniejszego użytkownika |
» 2017-11-19 20:54:58 Czyli powinno wyglądać tak: const Celsius operator +( const Kelvin & );
Celsius Celsius::operator +( const Kelvin & r_kelvin ) const { return( * this + static_cast < Celsius >( r_kelvin ) ); }
Po dwóch dniach już nie mam pomysłów, może jak odpocznę to coś ogarne :D |
|
kmlkamilek |
» 2017-11-24 14:25:23 Jeśli definiujesz stałą metodę, to jej w klasie również powinna zostać zadeklarowana jako stała. |
|
« 1 » |