兰州网站建设加王道下拉鞍山做网站的

web/2025/9/26 22:58:32/文章来源:
兰州网站建设加王道下拉,鞍山做网站的,wordpress 多个主题,江苏建设人才无纸化考核网站Visitor设计模式访问元素方法的问题 GPT给出的答案寻找灵感前置声明Element层次的实例Visitor interface的声明Element interface的声明Element实际类的声明及实现实现一个Visitor客户端代码 实战测试结果 针对C来说#xff0c;若要实现Visitor设计模式#xff0c;则会面临循… Visitor设计模式访问元素方法的问题 GPT给出的答案寻找灵感前置声明Element层次的实例Visitor interface的声明Element interface的声明Element实际类的声明及实现实现一个Visitor客户端代码 实战测试结果 针对C来说若要实现Visitor设计模式则会面临循环声明问题。 Element接口的声明中需要Visitor的声明Visitor接口需要Element……若均使用include宏则会导致至少一方无定义进一步导致“不完全类型”错误。 但如果按照常规仅在Visitor的声明上方采用单行声明方式添加Element实例的声明就无法调用各个Element内部的特有方法了。 GPT给出的答案 #include iostreamusing namespace std;class Employee; class HourlyEmployee;class IVisitor { public:virtual void Visit(HourlyEmployee) 0; };class Employee { public:virtual void Accept(IVisitor visitor) 0; };class HourlyEmployee : public Employee { public:void Accept(IVisitor visitor) override {visitor.Visit(*this);}int HourlyMethod() {return 0;} };class PayrollVisitor : public IVisitor { public:void Visit(HourlyEmployee employee) override {cout employee.HourlyMethod() endl;} };int main() {HourlyEmployee hourly_employee;PayrollVisitor payroll_visitor;hourly_employee.Accept(payroll_visitor); }源码存在一些问题已修改这个文件是可以正常编译的。 寻找灵感 从整个源码结构来看按顺序分为四个部分 前置声明Element层次的实例 这一部分是为了让Visitor接口能正确声明 Visitor interface的声明 C中不存在接口的概念用抽象类模拟。也就是带有纯虚函数 Element interface的声明 Element实际类的声明及实现 当然在实际项目中会把声明和定义分开。 实现一个Visitor 客户端代码 实战 基于上面的分析我们可以将整个实现放在不同文件中。 目录结构 在Nodes.h中声明Element层次 #pragma once#include Visitor.hclass Base { public:virtual void accept(Visitor v) 0; };class ClassA:public Base { public:ClassA() {}void accept(Visitor v) override;int getid(); };class ClassB:public Base { public:ClassB() {}void accept(Visitor v) override;int getidd(); };注意在Element层次的头文件中include Visitor接口的声明 在Nodes.cpp中实现这些Element #include Nodes.hvoid ClassA::accept(Visitor v) {v.visit(*this); }void ClassB::accept(Visitor v) {v.visit(*this); }int ClassA::getid() {return 1; }int ClassB::getidd() {return 2; }在Visitor.h中声明Visitor接口并在接口前前置声明Element实际类 #pragma once#include iostream using namespace std;class ClassA; class ClassB;class Visitor { public:virtual void visit(ClassA a) 0;virtual void visit(ClassB b) 0; };注意不要用包含的方式要直接声明 另起一个文件用来声明具体的Visitor: RealVisitor.h #pragma once#include Visitor.hclass RealVisitor: public Visitor { public:void visit(ClassA a) override;void visit(ClassB b) override; };RealVisitor.cpp实现它 #include RealVisitor.h #include Nodes.hvoid RealVisitor::visit(ClassA a) {cout a\n;cout aaa: a.getid() endl; }void RealVisitor::visit(ClassB b) {cout b\n;cout bbb: b.getidd() endl; }注意实现前务必在cpp文件前方采用include的方式包含Element具体类声明 因为实现Visitor的时候需要调用每个具体类的方法 主函数main.cpp #include Nodes.h #include RealVisitor.hint main() {ClassA a;ClassB b;RealVisitor v;a.accept(v);b.accept(v);Base ca;c.accept(v); }测试结果 a aaa:1 b bbb:2 a aaa:1可以看见即使以Base类的身份调用accept利用双重分发机制也可以正确地调用Visitor的正确处理方法Visitor的方法也可以正确地调用Element的方法。

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

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

相关文章

设计师去哪个网站找工作网站收录查询站长工具

一、const成员变量(常成员变量) 1、只能使用初始化列表对常成员变量进行初始化; 2、常成员变量可以被访问,但是不能被修改; 3、类中所有构造函数都必须在初始化列表对常成员函数进行初始化(包括拷贝构造,移动构造)。 声明&am…

餐饮网站建设规划书淘客推广计划

数组中插入相关练习 例题:定义一个方法 ,将数组{1,2,3}按照指定的格式进行拼接成一个字符串 /*例题:定义一个方法 ,将数组{1,2,3}按照指定的格式进行拼接成一个字符串, 格式定义如下[word1#word2#word3]. 思路分析&a…

要建一个优惠卷网站怎么做销售新品牌如何推广

题目描述 原题链接:LeetCode 27. 移除元素给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成…

温州网站建设哪里好河南网站建设的详细策划

源码下载:http://www.tracefact.net/SourceCode/Network-Part3.rar C#网络编程(异步传输字符串) - Part.3 这篇文章我们将前进一大步,使用异步的方式来对服务端编程,以使它成为一个真正意义上的服务器:可以为多个客户端的多次请求…

分类信息网站电子商务网站建设步骤一般为

这两天一直在沉迷于配脚本,由于服务器很多,所以我都是从一台服务器上配置好的脚本直接copy到另一台服务器,按说完全一样的脚本一样的操作,那么应该是一样的执行结果 but, Gul’dan,代…我重启服务器后服务并没有正常启…

做影视网站需要境外疗养院有必要做网站吗

<?php$user$_GET[username]; echo $user; ?> 直接运行改php脚本的话会出现” Notice: Undefined index: username in D:wamp\test\test.php on line 2”的警告,但这是PHP 的提示而非报错&#xff0c;这里我未给$user赋予值,就把它输出,所以报错了。PHP 本身不需要事…

如何建立一个自己的网站鞍山网站网站建设

如果需要学习鸿蒙开发可以查看以下学习资源链接 OpenAtom OpenHarmony Develop applications - HUAWEI HarmonyOS APP 转载请注明出处HarmonyOS(鸿蒙开发&#xff09;入门篇-CSDN博客&#xff0c;谢谢&#xff01;

物流企业网站模板wordpress sae上传图片

无论你要发布播客还是制作高品质的录音&#xff0c;以下任意一款开源应用都能如你所愿。一个稳定的音频编辑器也许并不是你的必需品&#xff0c;但它却能在你的生意场上大显身手。怎么样&#xff1f;使用音频编辑器&#xff0c;你可以添加音频到你的企业网站&#xff0c;创建和…

做网站后期为什么续费中国站免费推广入口

Spring 对请求参数的优雅处方式&#xff08;重写序列化方法&#xff09; 描述前端传参方式介绍代码实现&#xff1a;1、重写序列化方式代码2、设置类自动加载到 Spring 中 描述 在我们日常项目开发过程中&#xff0c;往往会遇到前端请求参数中有空格的情况&#xff0c;前端提交…

南山最专业的网站建设中企动力这个公司怎么样

一、公共英语考试介绍 全国英语等级考试&#xff08;又称公共英语考试&#xff09;设置五个级别和一个附属级&#xff0c;五个级别是&#xff1a; 一级&#xff3b;含一级(B)&#xff0c;即附属级&#xff3d;、二级、三级、四级、五级。 公共英语一级的说明:一级是初始级&…

网站js修改头像代码wordpress评论显示楼层

github或者gitee远程新建空仓库&#xff0c;在本地推送已有的仓库到远程新仓库。 1、远程新建新仓库&#xff0c;例如stm32repo 2、本地仓库添加远程仓库 git remote add origin https://gitee.com/xxxx/stm32repo.git 3、本地仓库完成提交后&#xff0c;推送到远程仓库 gi…

深圳集团网站建设公司WordPress go.php 代码

下列的下载代码示例是 HttpClientSample。它以不同的方式异步调用Web 服务。为了演示本例使用的不同方法&#xff0c;使用了命令行参数。示例代码使用了以下名称空间&#xff1a;System System.Linq System.Net System.Net.Http System.Net.Http.Headers System.Threading Sy…

网站后台需要ie6修改在线平面设计免费

『001』索引-Linux Shell Command shell命令 《01》【线上查询及帮助】【001】-【001】 【001】- 点我快速打开文章【man】【help】【已改版】《02》【文件及目录操作】【002】-【008】 【002】- 点我快速打开文章【ls】【cd】【已改版】【003】- 点我快速打开文章【cp】【find…

网站页面设计报价怎么做网页跳转

问题描述&#xff1a; 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0…

齐河县工程建设监理有限公司网站中国邮政做特产得网站

C - Cats Gym - 102875C 题意&#xff1a; n个猫&#xff0c;猫的身高在1到20之间&#xff0c;现在求这些猫的排列&#xff0c;满足一样高的猫不靠着&#xff0c;且他们之间的最矮的猫不比他们高 输出任意符合条件的排列 题解&#xff1a; 构造题 题目的限制条件决定了&…

徐州网站公司财务系统

转载于:https://www.cnblogs.com/diantao/p/5693877.html

天津建设网站安全员考试查询温州网站改版

Python元类&#xff1a;metaclass 1、类也是对象2、什么是元类3、__metaclass__属性4、自定义元类5、为什么要用metaclass类而不是函数6、究竟为什么要使用元类7、结语 声明&#xff1a; 本文主要参考文章&#xff1a;https://stackoverflow.com/questions/100003/what-are-met…

什么亲子网站可以做一下广告词命理网站开发

目录 一、概述 特点 1、统一存储 2、高扩展性 3、可靠性强 4、高性能 二、准备工作 1、关闭防火墙 2、关闭图形网络管理器 3、配置静态ip 4、关闭selinux 5、修改主机名 6、修改设置 7、ssh免密设置 8、hosts文件修改 9、时间同步 10、添加磁盘&#xff0c;并…

做一个企业网站需要多长时间建e室内设计网官网模型

2024.4.3 题目来源我的题解方法一 深度优先搜索方法二 广度优先遍历 题目来源 力扣每日一题&#xff1b;题序&#xff1a;1379 我的题解 方法一 深度优先搜索 同时对二叉树 original 与 cloned 进行深度优先搜索&#xff0c;如果 original当前搜索的节点的引用等于 target 节…