|
|
@@ -40,8 +40,8 @@ typedef struct pkt_falsh_light *pkt_falsh_light_t; //
|
|
40
|
40
|
struct pkt_falsh_light
|
|
41
|
41
|
{
|
|
42
|
42
|
struct pkt_light light;
|
|
43
|
|
- pkt_cell_t head;
|
|
44
|
|
- pkt_cell_t tail;
|
|
|
43
|
+ pkt_cell_t head; /* 用于存储多态对象的链表头 */
|
|
|
44
|
+ pkt_cell_t tail; /* 用于存储多态对象的链表尾 */
|
|
45
|
45
|
};
|
|
46
|
46
|
|
|
47
|
47
|
// 松下电池接口实现
|
|
|
@@ -161,20 +161,23 @@ pkt_falsh_light_t pkt_structure_falsh_light_cell(void)
|
|
161
|
161
|
|
|
162
|
162
|
int main(void)
|
|
163
|
163
|
{
|
|
|
164
|
+ // 构造对象
|
|
164
|
165
|
pkt_falsh_light_t falsh_light = pkt_structure_falsh_light_cell();
|
|
165
|
166
|
pkt_panasonic_cell_t panasonic_cell = pkt_structure_panasonic_cell();
|
|
166
|
167
|
pkt_cat_cell_t cat_cell = pkt_structure_cat_cell();
|
|
167
|
168
|
pkt_cat_cell_t cat_cell1 = pkt_structure_cat_cell();
|
|
168
|
169
|
|
|
|
170
|
+ // 初始化对象
|
|
169
|
171
|
falsh_light->light.init(falsh_light);
|
|
170
|
172
|
panasonic_cell->cell.init(panasonic_cell);
|
|
171
|
173
|
cat_cell->cell.init(cat_cell);
|
|
172
|
174
|
cat_cell->cell.init(cat_cell1);
|
|
173
|
175
|
|
|
174
|
|
- falsh_light->light.add_cell(falsh_light, panasonic_cell);
|
|
175
|
|
- falsh_light->light.add_cell(falsh_light, cat_cell);
|
|
176
|
|
- falsh_light->light.add_cell(falsh_light, cat_cell1);
|
|
177
|
|
-
|
|
|
176
|
+ // 将电池串联到手电筒里面
|
|
|
177
|
+ falsh_light->light.add_cell(falsh_light, panasonic_cell); /* 串联一节松下电池到手电筒 */
|
|
|
178
|
+ falsh_light->light.add_cell(falsh_light, cat_cell); /* 串联一节黑猫电池到手电筒 */
|
|
|
179
|
+ falsh_light->light.add_cell(falsh_light, cat_cell1); /* 串联一节黑猫电池到手电筒 */
|
|
|
180
|
+ // 打印手电筒的电量
|
|
178
|
181
|
printf("falsh light power = %d\n", falsh_light->light.power(falsh_light));
|
|
179
|
182
|
|
|
180
|
183
|
return 0;
|