[size=1em][size=1em] class X- u. s# n$ [; l' m
[size=1em] InterfaceU1
: g! |( q4 u9 X$ w[size=1em] {4 M3 h, c. _8 D# e1 i7 w) P0 K( F8 E# c& o% j
[size=1em] public:
c, c3 v- [3 m/ I2 w% U[size=1em] virtual void func1() = 0;
4 w9 }, A) H/ P' D[size=1em] }
, [: k* J/ V# A E" T+ a7 S& b4 Q" P: T% }- T/ G
[size=1em] class8 J q* J, W; h. q' H
[size=1em] InterfaceU2% s: }% k) V! |( {
[size=1em] {0 O4 _- ~, R, E4 _
[size=1em] public:9 Q8 U I" U( F
[size=1em] virtual void func2() = 0;
. D& g. z0 k8 H; Q9 h \[size=1em] }
4 b3 T& K& q7 D5 R1 n" n( [ G2 n3 r P9 @4 J/ S0 `( A( u* e
[size=1em] class
1 }4 ?9 W- X: s% H, E, N[size=1em] Wrapper4 d8 Y7 }- q$ [' ?& O
[size=1em] {
: J, J' [4 n: L[size=1em] public:. N& E/ E7 `/ U# Z7 s/ s
[size=1em] virtual InterfaceU1* getInterface1() = 0;. c( |' F7 o/ B- _5 T+ t k
[size=1em] virtual InterfaceU2* getInterface2() = 0;6 l& Z+ ?+ B& C! o3 d6 M; Z. C0 Y' O
[size=1em] }
, E% W1 t& N* s8 t* T+ D( q1 Q# Q3 W( E
[size=1em] class
' G! g1 ^ x& o, }0 E4 U/ t[size=1em] Base : public Wrapper, public InterfaceU1, public InterfaceU24 P( P# E% d# J( q9 K
[size=1em] {
# R$ V# K4 t! |, G[size=1em] public:$ h* ]1 w9 y7 _+ C
[size=1em] virtual InterfaceU1* getInterface1()
5 e& q7 w, \* l# N( P' h" t, F[size=1em] {
. Z# L& {. A1 i7 V" H9 s8 M; q[size=1em] return this;
) R, Z, Z+ x6 P$ q" {8 U[size=1em] }
& Y1 J" j0 c+ z& D; r+ N% O* w; G- Y" P[size=1em] virtual InterfaceU2* getInterface2()/ M \* |& j% R ~
[size=1em] {
/ `' p; o, B/ R
( n d, C, V Q[size=1em] return this;" Q+ ^2 ]% u. \; X' L; h! Y
[size=1em] }* C, ^* b1 O) [1 |8 v1 Q9 v
[size=1em] virtual void func1()
) K, K6 w- r% M* C[size=1em] {
) t ~! l5 z" t# }[size=1em] printf("%s", "func1");, M% G& N' p! o7 ]. N
[size=1em] }
' n* k2 q* u" R' W
1 O: E: B# h( o/ f6 e: @* F[size=1em] virtual void func2()
9 s& Z$ i" l9 f. q! R[size=1em] {
; a! v. j8 ?6 x: v1 v( y[size=1em] printf("%s", "func2");
# I+ E0 f% C# I4 d7 ?- a N- [$ W[size=1em] }6 D t0 U- g8 b+ ?" N
[size=1em] }
! ]3 [6 H- D- w& }, X& |
/ a- q. t: T; _2 }6 f* m |