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

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的析构函数,因为析构函数的声明是虚函数

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/600352.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Fast DDS 官方--C++ API Reference

Fast DDS 官方--C API Reference 1 介绍2 接口2.1 DDS DCPS PIM2.1.1 Core2.1.1.1 Entity 【基类】2.1.1.2 DomainEntity2.1.1.3 Policy 【枚举】2.1.1.3.1 DataRepresentationId2.1.1.3.2 DataRepresentationQosPolicy2.1.1.3.3 DataSharingQosPolicy2.1.1.3.4 DataSharingKin…

nginx连接数和性能优化

目录 一&#xff1a;介绍 二&#xff1a;优化配置 三&#xff1a;其他优化策略 一&#xff1a;介绍 Nginx是一个高性能的HTTP和反向代理服务器&#xff0c;具有许多用于优化连接数和性能的配置选项。以下是一些关键的配置和优化建议&#xff1a; 1&#xff1a;worker_proc…

Spark概述

Spark概述 Spark是什么 Apache Spark是一个快速的&#xff0c;多用途的集群计算系统&#xff0c;相对于Hadoop MapReduce将中间结果保存在磁盘中&#xff0c;Spark使用了内存保存中间结果&#xff0c;能在数据尚未写入硬盘时在内存中进行运算Spark只是一个计算框架&#xff0c;…

Mac Install Parallels Desktop 19.1.0

资料准备 ParallelsDesktop-19.1.0-54729.dmg Parallels Desktop Activation Tool 4.0.0 [MacKed].dmg链接: https://pan.baidu.com/s/1kxUKreiKdJXQIPXAJ8LJsA?pwd6666 提取码: 6666 –来自百度网盘超级会员v7的分享 双击 ParallelsDesktop-19.1.0-54729.dmg 点击打开 …

Apple 移动设备管理常见问题解答

什么是 Apple 移动设备管理 (MDM)&#xff1f; Apple 在企业中的扩张带来了生产力更高的员工队伍以及员工真正在任何地方工作的能力。 但更多的自由、不断扩大的边界和新的操作系统也会带来挑战。 任何规模的组织都必须让每个人的设备保持最佳运行状态&#xff0c;确保硬件和网…

Android studio环境配置

1.搜索android studio下载 Android Studio - Download 2.安装 3.配置环境 配置gradle&#xff0c;gradle参考网络配置。最后根据项目需求选择不同的jdk。

flutter 五:MaterialApp

MaterialApp const MaterialApp({super.key,this.navigatorKey, //导航键this.scaffoldMessengerKey, //scaffold管理this.home, //首页Map<String, WidgetBuilder> this.routes const <String, WidgetBuilder>{}, //路由this.initialRoute, //初始路由th…

Oracle START WITH 递归语句的使用方法及示例

Oracle数据库中的START WITH语句经常与CONNECT BY子句一起使用&#xff0c;以实现对层次型数据的查询。这种查询模式非常适用于处理具有父子关系的数据&#xff0c;如组织结构、分类信息等。 理解START WITH和CONNECT BY 在层次型查询中&#xff0c;START WITH定义了层次结构…

【SpringMVC】常用注解

什么是MVC&#xff1f; MVC是一种程序分层开发模式&#xff0c;分别是Model&#xff08;模型&#xff09;&#xff0c;View&#xff08;视图&#xff09;以及Controller&#xff08;控制器&#xff09;。这样做可以将程序的用户界面和业务逻辑分离&#xff0c;使得代码具有良好…

Leetcode2966. 划分数组并满足最大差限制

Every day a Leetcode 题目来源&#xff1a;2966. 划分数组并满足最大差限制 解法1&#xff1a;排序 将数组 nums 从小到大排序&#xff0c;每三个一组插入答案&#xff0c;如果有 nums[i 2] - nums[i] > k&#xff0c;则不满足要求&#xff0c;返回空数组。 代码&…

专业实习day3、4(路由器做内网访问公网)

专业实习 代码 display ip interface brief 显示当前设备下所有接口IP undo IP地址支持覆盖&#xff0c;但是正常的命令不能覆盖必须undo&#xff08;删除&#xff09;掉 un in en 在做配置的过程中&#xff0c;设备系统一般都会出现一些提示或者告警之类的东西&#xff0c;从…

matplotlib 虚战1

EDA 入门 visualization.py import matplotlib matplotlib.use("TkAgg")import pandas as pd from matplotlib import pyplot as plt import warningswarnings.filterwarnings(ignore)df pd.read_csv("diabetes.csv")# look at the first 5 rows of the…

字节填充与0比特填充以及数据链路的基本问题

目录 字节填充&#xff1a; 比特填充&#xff1a; 数据链路有三个基本问题 1.封装成帧 2.透明传输 3.差错检测 首先介绍一下PPP的帧结构&#xff1a; 首部的第一个字段和尾部的第二个字段都是标志字段F(Flag)&#xff0c;规定为0x7E (符号“0x”表示它后面的字符是用十六…

AntV-G6 -- 将G6图表应用到项目中

1. 效果图 2. 安装依赖 npm install --save antv/g6 3. 代码 import { useEffect } from alipay/bigfish/react; import G6 from antv/g6;const data {id: root,label: 利息收入,subLabel: 3,283.456,ratio: 3,children: [{id: child-a,label: 平均利息,subLabel: 9%,ratio:…

MySQL-约束

约束是作用在表中字段的规则&#xff0c;用于限制存储在表中的数据。 约束是作用于表中的字段上的&#xff0c;我们可以在创建表/修改表的时候添加约束。 目的&#xff1a;保证数据库中数据的正确&#xff0c;有效性和完整性。 常见约束&#xff1a; 举个例子&#xff1a;假…

Wrk压测发送Post请求的正确姿势

一、Wrk简介 wrk 是一个能够在单个多核 CPU 上产生显著负载的现代 HTTP 基准测试工具。它采用了多线程设计&#xff0c;并使用了像 epoll 和 kqueue 这样的可扩展事件通知机制。此外&#xff0c;用户可以指定 LuaJIT 脚本来完成 HTTP 请求生成、响应处理和自定义报告等功能。 …

多内层神经网络具有先天的不可解释性

多层神经网络的不可解释性是指其内部的决策过程很难被人类理解和解释。这主要是因为多层神经网络具有大量的神经元和多个层次的连接&#xff0c;使得网络的决策过程变得非常复杂。 具体而言&#xff0c;多层神经网络中每一层的神经元会根据输入的特征进行加权组合和非线性变换&…

数据结构学习 jz60 n个骰子的点数

关键词&#xff1a;动态规划 滚动数组优化 这道题还是不难的&#xff0c;就是特别纠结要怎么优化这个存储空间以及动态规划的方法&#xff0c;因为我觉得这个方法好原始&#xff0c;最后决定不优化了。最后发现题解也是这个原始的样子&#xff0c;我就放心了。用时38min。 题…

uView NoticeBar 滚动通知

该组件用于滚动通告场景&#xff0c;有多种模式可供选择 #平台差异说明 App&#xff08;vue&#xff09;App&#xff08;nvue&#xff09;H5小程序√√√√ #基本使用 通过text参数设置需要滚动的内容 <template><view><u-notice-bar :text"text1&quo…