Passer une fonction d'une classe virtuelle en parametre
Bonjour à tous,
j'ai un petit souci. J'essaye de lier une fonction d'une classe virtuelle dans une autre classe. Donc je dois pouvoir la passer en paramètre et l'enregistrer pour l'appeler lorsque j'en ai besoin.
Comment dois-je procéder ?
J'essaye plus ou moins de cette manière là (j'espère ne pas avoir fait trop d'erreur en représentant le code) mais codeblocks m'inquide ceci comme erreur..
Citation:
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\functional|539|error: no match for 'operator*' in '*__ptr'|
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| //myClassVirtual.hpp
class myClassVirtual
{
public:
myClassVirtual();
}
//myClassVirtual.cpp
#include "myClassVirtual.hpp"
myClassVirtual::myClassVirtual()
{
//c_tor
}
//////////////////////////////////////////////////////////////////////
//myClass1.hpp
#include "myClassVirtual.hpp"
#include "myClass2.hpp"
#include <functional>
class myClass1 : public myClassVirtual
{
public:
myClass1();
void myfunction()
private:
myClass2 class2;
}
//myClass1.cpp
#include "myClass1.hpp"
myClass1::myClass1() : myClassVirtual(), class2( &myClass1::myfunction )
{
//c_tor
}
void myClass1::myfunction()
{
std::cout<<"prout"<<std::endl;
}
}
//////////////////////////////////////////////////////////////////////
//myClass2.hpp
#include "myClassVirtual.hpp"
#include <functional>
class myClass2{
public:
myClass2( std::function<void( myClassVirtual& )> );
private:
std::function<void( myClassVirtual& )> m_myfunction;
}
//myClass2.cpp
#include "myClass2.hpp"
myClass2::myClass2( std::function<void( myClassVirtual& )> myfunction)
{
m_myfunction = myfunction;
}
} |
Merci de votre explication :)