2.C中如何实现纯虚类(我称它为纯虚结构) 比较前面,相信大家已经豁然开朗了。使用struct组合函数指针就可以实现纯虚类。
5 b& i5 B; z( n& R 例子:
; u# f, X; y/ L3 C5 v6 ~ typedef struct {' F9 W( d4 T9 z/ g
void (*Foo1)();
8 B" L" K* k; X4 e% G& o3 P9 {' Y char (*Foo2)();
* E# [' h9 u- r! J1 y/ N+ D char* (*Foo3)(char* st);
' y0 ^6 Y9 \1 d, _ }MyVirtualInterface;
, Y: m, p4 O9 n0 B# @+ _ 这样假设我们在主体框架中要使用桥模式。(我们的主类是DoMyAct,接口具体实现类是Act1,Act2)下面我将依次介绍这些“类”。(C中的“类”在前面有说明,这里换了一个,是使用早期的数组的办法)
4 G. L( ^! w% G 主类DoMyAct: 主类中含有MyVirtualInterface* m_pInterface; 主类有下函数:
9 s8 s. Q/ w5 V/ ^3 X DoMyAct_SetInterface(MyVirtualInterface* pInterface)
4 i1 |' w4 |% { {
1 C& @, ^* e5 Y8 B. {! C) @7 n9 d8 @ m_pInterface= pInterface;
* S& w2 U c. x, p }3 d' z- e, K: x5 ]/ I
DoMyAct_Do()
; B( ]# N0 t4 D5 H& x$ l {
- R7 `* C$ n& P4 L0 X7 k if(m_pInterface==NULL) return;
8 Q* a) W8 m+ n/ E) | m_pInterface->Foo1();
, o0 f8 C" K/ g# l4 L' X c=m_pInterface->Foo2();
2 E U( e7 P2 Q' d8 P, X3 p } |