第11章 GUI Page462~476 步骤二十三,二十四,二十五 Undo/Redo ①为Undo/Redo做准备工作,弹出日志窗口

step23和step24,step25合起来学习

工程一

1.主窗口类中添加新的私有成员数据:

2 主窗口构造函数中,最后一行加入,用于调试的Log功能

3 鼠标弹起函数,添加Undo动作

4 编译之后报错:ActionLink不是一个类型

5  新增一个头文件  action_link.hpp

编译之后,报错

error: 'struct ActionLink' has no member named 'AddAction'  没有成员函数
error: expected type-specifier before 'AddAction' 没有类型标识符

6 增加一个成员函数AddAction()

编译报错:

expected type-specifier before 'AddAction',没有类型标识符

7  增加一个类AddAction

编译报错

error: no matching function for call to 'AddAction::AddAction(std::__cxx11::list<IItem*>&)没有合适的构造函数

8  增加合适的构造函数

编译报错

 error: no matching function for call to 'ActionLink::AddAction(AddAction*)'
         _actionLink.AddAction(new AddAction(_items)); 

AddAction()函数形式不对

9 修改AddAction函数的形式,void AddAction(EditAction* newAction)

然后编译报错:error: 'EditAction' has not been declared

10 增加类  EditAction

编译后报错:

error: no matching function for call to 'ActionLink::AddAction(AddAction*)',参数不是AddAction

·

11 让AddAction继承EditAction

编译后报错:wxMyPainterMain.cpp:328: undefined reference to `AddAction::AddAction(std::__cxx11::list<IItem*, std::allocator<IItem*> >&)'   没有构造函数

12  AddAction增加两个私有属性,实现AddAction的构造函数

编译后报错:action_link.cpp:5: undefined reference to `vtable for AddAction',找不到虚函数表

13  实现  AddAction的析构函数,因为析构函数的声明是虚函数

编译后不再报错,运行效果:

可以正常运行了,日志窗也弹出了,但记录日志功能还不能用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值