[C++] Przeciążanie operatora w klasie
Ostatnio zmodyfikowano 2016-07-21 10:58
victordeleco2 Temat założony przez niniejszego użytkownika |
[C++] Przeciążanie operatora w klasie » 2016-07-20 17:47:44 Witam, mam problem z prostym zadaniem. Przejrzałem sporo materiałów w internecie ale w żaden sposób nie mogę tego rozwiązać. Muszę napisac operator logiczny przeciążony jednak nie mam pomysłu jak to zrobić. Pomoże ktos? Pozdrawiam Ostatni podpunkt: https://zapodaj.net/images/4a8f779a94f23.pngKod: #include <iostream>
using namespace std;
class TKwota { private: unsigned int zlote; unsigned int grosze; public: TKwota() { zlote = 0; grosze = 0; } TKwota( int a, int b ) { if( b > 100 ) { zlote = a +( b / 100 ); grosze = a % 100; } else { zlote = a; grosze = b; } } void Wyswietl() { cout << zlote; cout << grosze; } void Zwieksz( int c, int d ) { zlote = zlote + c; grosze = grosze + d; } };
int main() { return 0; }
|
|
carlosmay |
» 2016-07-20 18:10:04 |
|
victordeleco2 Temat założony przez niniejszego użytkownika |
» 2016-07-20 18:25:00 Przeczytałem całe ale jednak dalej nie mogę sobie poradzić. Nie wiem jak napisać sam początek.
|
|
Gibas11 |
» 2016-07-20 20:49:27 @carlosmay Wyręczę Cię. ;) @autor #include <iostream>
using namespace std;
class TKwota { private: unsigned int zlote; unsigned int grosze; public: TKwota() { zlote = 0; grosze = 0; } TKwota( int a, int b ) { if( b > 100 ) { zlote = a +( b / 100 ); grosze = a % 100; } else { zlote = a; grosze = b; } } void Wyswietl() { cout << zlote; cout << grosze; } void Zwieksz( int c, int d ) { zlote = zlote + c; grosze = grosze + d; } bool operator ==( const TKwota op ) { return( this->zlote == op.zlote && this->grosze == op.grosze ); } };
int main() { TKwota k1( 5, 5 ); TKwota k2( 5, 5 ); TKwota k3( 6, 7 ); std::cout << "(k1 == k2) = " <<( k1 == k2 ) << std::endl; std::cout << "(k1 == k3) = " <<( k1 == k3 ) << std::endl; std::cout << "(k2 == k3) = " <<( k2 == k3 ) << std::endl; return 0; }
Jeśli rzeczywiście przeczytałeś tamten artykuł powinieneś załapać. ;) |
|
Szadziu |
» 2016-07-20 23:41:00 bool operator ==( const TKwota op ) brakuje referencji i const'a bool operator ==( const TKwota & op ) const |
|
Gibas11 |
» 2016-07-21 01:15:26 const rozumiem, tylko to raczej coś o czym autor wątku może nie wiedzieć więc wg mnie lepiej go nie dezorientować, ale referencja? Jak wtedy ma zadziałać taki kod? TKwota k( 2, 3 ) auto b = k == TKwota( 6, 7 );
|
|
carlosmay |
» 2016-07-21 01:41:18 Jak wtedy ma zadziałać taki kod? |
Tworzony jest obiekt bez nazwy. #include <iostream>
class Cls { int a_; int b_; public: Cls( int a, int b ) : a_ { a }, b_ { b } { } bool operator ==( const Cls & cls ) const { return( a_ == cls.a_ && b_ == cls.b_ ); } };
int main() { Cls c1( 1, 1 ); Cls c2( 1, 1 ); std::cout << std::boolalpha <<( c1 == c2 ) << '\n' <<( c1 == Cls( 1, 1 ) ) << '\n' <<( c1 == Cls( 1, 2 ) ) << '\n'; }
|
|
Elaine |
» 2016-07-21 02:36:20 Operator porównania powinien być implementowany jako zwyczajna funkcja poza klasą, nie jako funkcja składowa. |
|
« 1 » 2 |