#include struct _F_CLS1{ #define _F_CLS1_p1(nom) int nom p1 (int li) virtual _F_CLS1_p1( ) = 0; }; class CLS1{ int nb; _F_CLS1 &c; public: CLS1(_F_CLS1 &_c, int _nb) : c(_c) { nb = _nb; } void print (const char *msg) { printf ("msg=:%s: p1=%d\n",msg,c.p1(nb)); } }; struct _F_foo2{ #define _F_foo2_f1(nom) void nom f1 (int li) virtual _F_foo2_f1( ) = 0; }; int foo2 (_F_foo2 &c, int n) { for (int i=0; i struct _F_foo3{ #define _F_foo3_load(nom) void nom load() virtual _F_foo3_load ( ) = 0; #define _F_foo3_save(nom) void nom save () virtual _F_foo3_save( ) = 0; }; int foo3 (_F_foo3 &c, int n) { int n; glocal.n = n; printf ("foo3 n=%d\n",n); c.load(); (3); printf ("\t\tf1 de foo2 dans foo3 foo3.n=%d\n",glocal.n); c.save(); } int main(int argc, char *argv[]) { int a; int b; CLS1 *obj; glocal.a = 1; glocal.b = 2; obj(5); return li * glocal.b; glocal.obj = &obj; printf ("Debut\n"); obj.print("allo"); (1); printf ("a=%d,b=%d,li=%d\n",glocal.a,glocal.b,li); (2); for (int i=0; i<10; i++){ printf ("inside [%d] a=%d,b=%d\n",li,glocal.a,glocal.b); } (4); printf ("perdu load a=%d\n",glocal.a); printf ("perdu save b=%d\n",glocal.b); (2); printf ("loading %d %d\n",glocal.a,glocal.b); printf ("Saving %d %d\n",glocal.a,glocal.b); glocal.b = 20; glocal.obj->print("Saving"); }