Mon problème est le suivant :
Je voudrais passer en paramètre à une fonction g, une fonction f qui prend en paramètre une classe abstraite. Ça coince à la compilation et je ne vois pas comment m'en sortir même en faisant appel aux templates.
Voilà le code illustrant ce que je voudrais faire :
Je suis prêt à utiliser la bibliothèque boost si cela permet de résoudre le problème.
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 #include <iostream> //--------------------------------- class Obj { public: Obj() {}; Obj(std::string data) {}; virtual ~Obj() = 0; virtual std::string Data() = 0; }; //--------------------------------- class Son : public Obj { public: Son(std::string data):_data(data) {}; ~Son() {}; std::string Data() { return _data;} public: std::string _data; }; //--------------------------------- typedef Obj* (Func)(Obj*); //--------------------------------- Son * f(Son * son) { return new Son("new " + son->Data()); } //--------------------------------- void g(Func func) { Son son("data"); Son * newSon = func(&son); } //--------------------------------- int main() { g(f); return 0; }
Partager