[c++] wskaźniki na metody
Ostatnio zmodyfikowano 2014-04-14 18:10
Szary Temat założony przez niniejszego użytkownika |
[c++] wskaźniki na metody » 2014-04-14 16:59:04 Cześć, program jest osobny tylko dla tego problemu. Nierozumiem, dlaczego wkaźnik nie uruchamia funkcji lub co też jest możliwe w ogóle nie rozumiem działania tego wskaźnika. #include <iostream>
using namespace std;
class lol { public: void( lol::* wsk )(); void funkcja(); void set(); };
int main() { lol o; o.wsk = nullptr;; cout << o.wsk << endl; o.set(); o.wsk; system( "PAUSE" ); return 0; }
void lol::funkcja() { cout << "Lol wywołałeś funkcję!" << endl; }
void lol::set() { wsk = & lol::funkcja; }
PS wie ktoś jak przekształcić liczbę (int) na wkaźnik lub tablicę tak by można było operować na każdej cyfrze osobno? |
|
Adik80 |
» 2014-04-14 17:11:06 samo o.wsk zwraca ci wskaznik, ale musisz go wywolac na rzecz jakiegos obiektu, czyli powinno byc (o.*o.wsk)();
|
|
michal11 |
» 2014-04-14 17:13:57 Co do konwersji int na tablicę to napisz sobie funkcję, to nie jest nic trudnego. |
|
Szary Temat założony przez niniejszego użytkownika |
» 2014-04-14 17:56:42 Dobra a jeżeli całość jest wykonywana w innej metodzie tej klasy? class Player : public Event { public: Player( SDL_Renderer * ); ~Player(); void update(); void draw() const; private: typedef void( Player::* MOVE )(); MOVE move; void goLeft(); void goRight(); void goDown(); void goUp(); Sprite * boy; };
void Player::update() { if( keyDown ) { std::cout << "key is down" << std::endl; switch( getEvent()->key.keysym.sym ) { case SDLK_UP: move = & Player::goUp; ( Player::* Player::move )(); break; case SDLK_DOWN: down = true; goDown(); break; case SDLK_LEFT: left = true; goLeft(); break; case SDLK_RIGHT: goRight(); right = true; break; default: break; } } }
|
|
Monika90 |
» 2014-04-14 18:10:11 |
|
« 1 » |