Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!
0 Пользователей и 1 Гость просматривают эту тему.
#ifndef BUTTON_H #define BUTTON_H #include <string> #include <StateManager.h> class Button{ protected: bool active; public: std::string text; int x, y, w, h; Button(){}; virtual ~Button(){}; bool isActive(){return active;}; virtual void onClick(){}; virtual void onMouseIn(); virtual void onMouseOut(); }; class StateButton: public Button{ State *onClickState; public: StateButton(int, int, int, int, std::string, State*); ~StateButton(){}; void onClick(); }; template<typename T> class CallerButton: public Button{ T caller; public: CallerButton(int, int, int, int,std::string, T); ~CallerButton(){}; void onClick(); };#endif
#ifndef GAME_STATE_H #define GAME_STATE_H #include <State.h> #include <Button.h> #include <vector> #include <EventManager.h> #include <VideoManager.h> class GameState: public State{ bool turn; int **field; std::vector<Button*> *buttons; public: GameState(); ~GameState(){}; void onActive(); void onPassive(); void onRender(); void onPhysicTick(){}; void mark(int, int); };#endif
buttons->push_back(new CallerButton<void (GameState::*)(int, int)>(170 + 50*c1, 170+50*c, 40, 40, "test", GameState::mark(c1, c));
g++ -I include -c src/GameState.cpp -o obj/GameState.o -std=c++11src/GameState.cpp: In member function ‘virtual void GameState::onActive()’:src/GameState.cpp:24:132: error: invalid use of void expression buttons->push_back(new CallerButton<void (GameState::*)(int, int)>(170 + 50*c1, 170+50*c, 40, 40, "test", GameState::mark(c1, c));
buttons->push_back(new CallerButton<void (GameState::*)(int, int)>(170 + 50*c1, 170+50*c, 40, 40, "test", &GameState::mark));
g++ -I include src/main.cpp obj/Application.o obj/BackgroundState.o obj/Button.o obj/EventManager.o obj/GameState.o obj/MenuState.o obj/StateManager.o obj/VideoManager.o -o bin/game.out -lSDL2main -lSDL2 -lSDL2_imageobj/GameState.o: in function «GameState::onActive()»:GameState.cpp:(.text+0x1e1): undefined reference «CallerButton<void (GameState::*)(int, int)>::CallerButton(int, int, int, int, std::string, void (GameState::*)(int, int))»collect2: error: ld returned 1 exit status
я бы порекомендовал действительно, ознакомиться с делегатами, к примеру в C++CLI (что бы понять что это такое) b pfntv ghjxbnfnm cnfnm. http://habrahabr.ru/post/78299/
Страница сгенерирована за 0.121 секунд. Запросов: 25.