#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
risposta
13
boost::bind(&player::play, &thePlayer)
È necessario utilizzare i segnaposto per i due argomenti:
boost::bind(&player::play, &thePlayer, _1, _2)
I segnaposto consentono di dire "sono impegnative solo alcuni argomenti; altri argomenti saranno forniti in seguito."
2
E se si desidera creare codice portabile - specifica dello spazio dei nomi di segnaposto direttamente:
boost::bind(&player::play, &thePlayer, ::_1, ::_2); // Placeholders of boost::bind are placed in global namespace.
Problemi correlati
- 1. Funzione membro della classe come richiamata utilizzando la funzione boost :: bind e boost ::
- 2. Come utilizzare il binding boost con una funzione membro
- 3. Come forzare il sovraccarico della funzione template per boost :: bind?
- 4. Come utilizzare std :: bind() per chiamare la versione della classe base di una funzione virtuale?
- 5. come posso utilizzare cudaStreamAddCallback() con un metodo membro della classe?
- 6. Posso usare boost :: enable_if su una funzione membro?
- 7. Come associare una delle funzioni membro con lo stesso nome in una classe, con C++ 11 std :: bind
- 8. std :: bind() - utilizzo di una funzione membro protetto di base dalla funzione membro di una classe derivata
- 9. Chiamare la definizione della classe base della funzione membro virtuale con il puntatore di funzione
- 10. Puntatore funzione al membro della classe statico?
- 11. Utilizzo di un membro della classe come argomento predefinito per una funzione membro
- 12. Classe puntatore a funzione membro
- 13. Funzione membro variabile della classe template
- 14. Variabile membro membro della classe derivata accesso in funzione virtuale
- 15. Come utilizzare le funzioni lambda con boost :: bind/std :: bind in VC++ 2010?
- 16. Boost MPL: chiama una funzione (membro) solo se esiste
- 17. Come faccio `std :: bind` un membro di classe non statico a una funzione di callback Win32` WNDPROC`?
- 18. Boost type_erasure qualsiasi con funzione membro const
- 19. boost :: bind con membri protetti e contesto
- 20. Funzione Puntatore alla funzione membro della classe template? (C++)
- 21. eseguire thread della funzione membro della classe in C++
- 22. Funzione membro membro classe operatore moderata
- 23. Come assegnare una funzione membro come parametro?
- 24. Puntatore funzione C++ (membro classe) a funzione membro non statico
- 25. Come utilizzare una funzione di classe in C++?
- 26. Matrice come membro privato della classe
- 27. Come registrare un puntatore a funzione membro della classe derivata con una classe di base
- 28. chiamando la funzione "C++" membro della classe da "C" Codice
- 29. Come posso associare una funzione pyplot a un'istanza di figura?
- 30. Come utilizzare boost :: bind con parametri non copiabili, ad esempio boost :: promise?