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..

d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\functional|539|error: no match for 'operator*' in '*__ptr'|
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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