Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Adapter binder2nd działający z utworzoną przeze mnie klasą

Ostatnio zmodyfikowano 2012-04-26 15:29
Autor Wiadomość
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:

C/C++
#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ść :)
P-55349
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] :)
P-55350
DejaVu
» 2012-04-25 22:36:05
» standard C++bind2nd - czytałeś to?
P-55351
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
P-55400
Elaine
» 2012-04-26 15:23:25
C/C++
bool operator <( const Krzaczek & k ) const /* <<< tego brakuje */ {
    return wartosc < k.wartosc;
}
Swoją drogą, najlepiej byłoby, gdyby operator< był wolną funkcją.
P-55406
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 :)
P-55409
« 1 »
  Strona 1 z 1