| 12
 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
 
 | #include <iostream>
 
// Classes du module
struct A
{
	A() : v(5) {}
	void f(){ std::cout << v << std::endl; }
	int v;
};
 
struct B
{
    void g(){}
};
 
// Classe interface
class IAB
{
    private:
        struct A& a;
        struct B& b;
 
    public:
        IAB(A& aa, B& bb) : a(aa), b(bb) {}
 
        void do_thing() { a.f(); }
        void do_another_thing() { b.g(); }
};
 
// Exemple d'utilisation
int main()
{
	A * pA = new A();
	IAB interface2(*pA, B());
	delete pA;
	interface2.do_thing();
 
	return 0;
} | 
Partager