step23和step24合起来学习
工程一
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的析构函数,因为析构函数的声明是虚函数
编译后不再报错,运行效果:
可以正常运行了,日志窗也弹出了,但记录日志功能还不能用