[size=1em][size=1em]class
5 x4 ]) Z& K) `2 R0 w[size=1em] InterfaceU1
: K) L: h. j% B) r1 Y[size=1em]{
5 O: t- ^* E; @; k6 [) }( D[size=1em]public:
" i6 S% j) _! @4 F[size=1em] virtual void func1() = 0;/ M# C2 O, h3 b0 _8 w9 ~
[size=1em]}5 l: |( t' O; p# K& _6 k4 I
0 Z* o% F n9 e( b: f8 d
[size=1em]class
, U- o+ G3 z% _& d9 r6 g! G3 c[size=1em] InterfaceU2
7 h% t+ k. e2 L$ U9 R" ~) B[size=1em]{
# ]5 p; B7 T5 {# q[size=1em]public:
! P a( Q' \! f2 ]+ ]* i$ Q[size=1em] virtual void func2() = 0;1 Y& [; ?1 R7 x! F# V
[size=1em]}
* [: J/ B! V: [' C1 _+ n" O* U8 a( ~4 `3 p+ `8 \1 m2 ?3 L0 [9 [
[size=1em]class! m v5 j* T! D- B; ^
[size=1em] Wrapper) B. g0 p6 r$ g2 o# c: A
[size=1em]{3 C8 g1 z8 |8 F+ O* W7 a' Y6 J: ?0 k
[size=1em]public:
, y' Y6 ?0 X0 a2 l$ M5 y: s[size=1em] virtual InterfaceU1* getInterface1() = 0;8 z% s) C) H7 i' o
[size=1em] virtual InterfaceU2* getInterface2() = 0;3 o, s; p! B+ h$ G5 n+ p" F
[size=1em]}
, O! T. F+ u2 Y) q' S# E7 h! r! `7 O4 a
[size=1em]class
. M1 L/ ^% R4 j6 P P! S[size=1em] Base : public Wrapper, public InterfaceU1, public InterfaceU20 a0 V8 c' Z. S9 C
[size=1em]{
, i' p; o" k6 j4 |% c7 d[size=1em]public:
, Y1 x* }/ O C' D, o[size=1em] virtual InterfaceU1* getInterface1()
7 G0 Y- S( s, r- }, r& M, \. \1 u[size=1em] {
8 v, [" C( B: B3 i4 _: }8 W[size=1em] return this;
$ \$ ?0 H$ m: [" a[size=1em] }
" k) U. q7 n2 j8 ]+ [0 @[size=1em] virtual InterfaceU2* getInterface2()$ j0 {3 s+ l/ m/ l5 o# [" j9 I
[size=1em] {
2 B H+ f( H& g( a+ I$ D. [3 ~. g7 A3 e* S0 U9 }, |2 N
[size=1em] return this;+ e) t7 a+ Q5 Q0 X( N. v) V
[size=1em] }
0 x& G) P( ^# x/ ?/ x( g8 y[size=1em] virtual void func1()
& k4 v, r" y( I) d( M[size=1em] {
0 G. s6 i: G. I! a$ \[size=1em] printf("%s", "func1");. t4 f( \' c9 N2 s5 ~$ \
[size=1em] }
% b- T, Z* i8 k% X8 U! n
6 V+ d0 K# X8 A, C% u[size=1em] virtual void func2()( A6 h7 [ \; |1 ~% C
[size=1em] {
6 X* X' d4 ], Z+ _$ R[size=1em] printf("%s", "func2");
% z8 k+ H9 R1 \[size=1em] }" U+ D" D; L, @, d4 M( E' H+ t
[size=1em]} N" L' n7 Y6 x, \
, `8 I) q; l7 V! l
|