Adapter binder2nd działający z utworzoną przeze mnie klasą
Ostatnio zmodyfikowano 2012-04-26 15:29
kamil1338 Temat założony przez niniejszego użytkownika |
Adapter binder2nd działający z utworzoną przeze mnie klasą » 2012-04-25 21:59:52 Witam serdecznie, mam problem z binder2nd. Chciałem sobie z tym poradzić sam ale się podaję. Program się nie kompiluje. Starałem się zrozumieć działanie binder2nd i na chłopski rozum to napisać lecz nie wyszło. Komunikaty błędów za wiele mi nie mówią. Oto program: #include <iostream> #include <functional> using namespace std;
class Krzaczek { int wartosc; public: Krzaczek( int i ) : wartosc( i ) { } bool operator <( const Krzaczek & k ) { return wartosc < k.wartosc; } };
int main() { Krzaczek zielony( 19 ); binder2nd < less < Krzaczek > > test( less < Krzaczek >(), Krzaczek( 21 ) ); if( test( zielony ) ) cout << "OK!" << endl; system( "pause" ); }
PS. Jestem tu nowy, nie wiem czy należy kod umieszczać w jakiś klamrach. Proszę o wyrozumiałość :) |
|
SeaMonster131 |
» 2012-04-25 22:30:11 Podaj jeszcze błędy jakie wyskakują ([code] bledy [/code]), a kod c++ umieszczaj w tagach [cpp] kod [cpp] :) |
|
DejaVu |
» 2012-04-25 22:36:05 |
|
kamil1338 Temat założony przez niniejszego użytkownika |
» 2012-04-26 15:13:02 DejaVu, tak czytałem i wiem jak to działa. binder2nd z typem int działa jak należy a z typem Krzaczek już nie. Oto błędy: C:\Dev-Cpp\include\c++\3.4.2\bits\stl_function.h In member function `bool std::less<_Tp>::operator()(const _Tp&, const _Tp&) const [with _Tp = Krzaczek]': 446 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_function.h instantiated from `typename _Operation::result_type std::binder2nd<_Operation>::operator()(typename _Operation::first_argument_type&) const [with _Operation = std::less<Krzaczek>]' 18 D:\c++\wlasna_klasa_binder2nd.cpp instantiated from here 227 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_function.h passing `const Krzaczek' as `this' argument of `bool Krzaczek::operator<(const Krzaczek&)' discards qualifiers |
|
Elaine |
» 2012-04-26 15:23:25 bool operator <( const Krzaczek & k ) const { return wartosc < k.wartosc; } Swoją drogą, najlepiej byłoby, gdyby operator< był wolną funkcją. |
|
kamil1338 Temat założony przez niniejszego użytkownika |
» 2012-04-26 15:29:44 Bardzo dziękuję, zapomniałem dodać const . Program działa :) |
|
« 1 » |