#include <QtCore/QCoreApplication>
#include <boost/bind.hpp>
#include <boost/function.hpp>
class button
{
public:
boost::function<void()> onClick;
boost::function<void(int ,double)> onClick2;
};
class player
{
public:
void play(int i,double o){}
void stop(){}
};
button playButton, stopButton;
player thePlayer;
void connect()
{
//error C2298: 'return' : illegal operation on pointer to member function expression
playButton.onClick2 = boost::bind(&player::play, &thePlayer);
stopButton.onClick = boost::bind(&player::stop, &thePlayer);
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
connect();
return a.exec();
}
6
A
Odpowiedz
13
boost::bind(&player::play, &thePlayer)
Trzeba użyć zastępcze dla dwóch argumentów:
boost::bind(&player::play, &thePlayer, _1, _2)
Symbole zastępcze pozwalają powiedzieć „Jestem wiążące tylko niektóre z argumentów, pozostałe argumenty zostaną dostarczone później.”
2
A jeśli chcesz stworzyć przenośną kodu - określ przestrzeń nazw zastępczych bezpośrednio:
boost::bind(&player::play, &thePlayer, ::_1, ::_2); // Placeholders of boost::bind are placed in global namespace.
Powiązane problemy
- 1. Jak mogę użyć metody cudaStreamAddCallback() z metodą członka klasy?
- 2. Czy można użyć funkcji boost :: bind, aby skutecznie łączyć funkcje?
- 3. Używanie metody boost :: bind z konstruktorem
- 4. Czy mogę użyć std :: bind, aby "dołączyć" stan do funkcji?
- 5. Jaka jest różnica między Boost :: bind a Boost Phoenix :: bind?
- 6. Próbuję statycznie powiązać Boost
- 7. Określ funkcję członka klasy jako przyjaciela innej klasy?
- 8. WPF Bind do członka klasy w kodzie za
- 9. Jak wywołać funkcję członka szablonu?
- 10. Jak hashować i porównywać funkcję wskaźnik-do-członka?
- 11. Jak serializować funkcję boost :: function, aby wysłać ją w message_queue
- 12. php: czy mogę utworzyć i wywołać funkcję wewnątrz metody klasy?
- 13. Jak mogę uzyskać wskaźnik funkcji członka do konstruktora kopiowania klasy?
- 14. Python: powiązać funkcję klucza
- 15. Czy mogę użyć boost na uclibc linux?
- 16. Jak wykonać funkcję członka klasy w osobnym wątku przy użyciu klasy wątków C++ 11?
- 17. Jak użyć funkcji std :: bind() w celu wywołania wersji wirtualnej funkcji klasy podstawowej?
- 18. Jak mogę użyć Boost.Bind dla typów złożonych?
- 19. dlaczego trzeba powiązać funkcję w konstruktorze
- 20. Dlaczego musimy użyć boost :: asio :: io_service :: work?
- 21. lambdas wymagają przechwycenia "tego", aby wywołać funkcję statycznego członka?
- 22. Jak użyć metody Zamień wyrażenie regularne zastąpić?
- 23. Jak mogę użyć biblioteki Boost :: regex.hpp w C++?
- 24. Jak mogę użyć tylko jednej biblioteki/pliku boost?
- 25. Jak mogę pozorować metody klasy @InjectMocks?
- 26. Jak mogę przedefiniować metody klasy Perla?
- 27. Jak poprawnie użyć parametru boost async_write z wektorem boost const_buffers?
- 28. Knockout.js Jak mogę powiązać z właściwością sub
- 29. boost :: bind nie działa z wyrażeniem warunkowym?
- 30. std :: wiążą z funkcji członka klasy