草庐IT

interface-design

全部标签

c++ - 如何为集合提供带有迭代器的 const 接口(interface)?

我想创建一个具有如下签名的函数://Setfoundtobeaniteratortothelocationofkeyinmaporend()//ifnotfound.boollookup(constKey&key,conststd::map&map,std::map::const_iterator&found);但我也想在映射和迭代器不是const的情况下调用它,以便我可以修改找到的值:constKeykey;std::mapmap;std::map::iteratorfound;if(lookup(key,map,found)){found->second.modifingNonCo

c++ - 添加新继承的 "interface"和虚拟方法需要重新编译

现有的答案涵盖了一般情况,但它们有些模糊,我需要确定这一点。考虑:派生自抽象基类“接口(interface)”的现有定义类。类是库的一部分,被编译成多个dll,这些dll通过接口(interface)相互通信。然后添加:第二个“接口(interface)”,定义的类现在将从中派生(因此现在它有两个接口(interface))。由新接口(interface)访问的已定义类的新虚拟方法。我是否需要重新编译链接该库的每个dll,还是只需要重新编译使用新方法的dll?编辑:我的原始接口(interface)公开了一个动态方法,它是Dynamic(intOP,void*args)是否可以添加一个

C++ 多态接口(interface)

我正在尝试创建一种方法来处理许多不同版本的协议(protocol),类似于问题Howtohandledifferentprotocolversionstransparentlyinc++?.我同意继承链可以很好地解决这个问题。这就是我在Java中的做法:创建一个IParser接口(interface),并有几个ParserV0、ParserV1、...类,相互继承并实现IParser。我知道由于某些多重继承和虚拟技巧,在C++中创建该结构是可能的。关键在于:在Java中,如果我想要一个解析器,我想,我可以说IParserparser=getCorrectVersion(...)。我会得

c++ - 接口(interface)的延迟实现

我有一个Foo类。structFoo{voidsomeFunc(){}};我有一个接口(interface)IFoo。structIFoo{virtualvoidsomeFunc()=0;};如果我不想直接将IFoo实现到Foo中,有没有办法在以后实现?...失败的尝试是这样做:创建一个实现它们的类...理论上通过继承Foo来满足IFoo。structBar:Foo,IFoo{};可以这样使用:Barx=Bar();IFoo*y=&x;但这没有用。编译器将Bar视为抽象的。有人有什么想法吗?没有要粘贴的实际代码问题,我只是想看看这样的事情是否可行。 最佳答案

c++ - C 风格数组与库接口(interface)的 std::array

我想编写一个带有提供读取功能的接口(interface)的库。C风格的数组容易出错,但允许传递任何大小的缓冲区。C++数组更安全,但强制使用大小来构造。//interface.h//C-stylearrayintread(std::uint8_t*buf,size_tlen);//C++arrayintread(std::array&buff)我怎样才能两全其美?我在考虑函数模板,但它对于库接口(interface)来说似乎不实用。templateintread(std::array&buf);编辑std::vector可能是一个很好的候选人,但如果我们考虑到char*和std::ar

c++ - 为什么智能指针 vector 不是指向实现与该接口(interface)协变的接口(interface)的项目?

为什么智能指针vector不与item实现的接口(interface)协变?例如如果我有一个指向狗的指针vector,为什么我不能将它用作指向iAnimal的指针vector?#include#include#include#includestructiAnimal{virtualstd::stringspeak()const=0;};structiMammal:publiciAnimal{virtualstd::stringspeak()const=0;virtualintlegs()const=0;};structDog:publiciMammal{std::stringspeak

CHAPTER 9: 《DESIGN A WEB CRAWLER》第9章 《设计一个web爬虫》

CHAPTER9:《DESIGNAWEBCRAWLER》第九章设计一个web爬虫在本章中,我们将重点介绍网络爬虫设计:一种有趣而经典的系统设计面试问题。网络爬虫被称为机器人或蜘蛛。它被搜索引擎广泛用于发现网络上的新内容或更新内容。内容可以是网页、图像、视频、PDF文档等。网络爬虫首先收集一些网页,然后跟踪这些网页上的链接页面以收集新内容。图9-1显示了爬网过程的直观示例。爬虫有多种用途:搜索引擎索引:这是最常见的用例。爬虫收集网络页面为搜索引擎创建本地索引。例如Googlebot就是网络谷歌搜索引擎背后的爬虫。Web存档:这是从Web收集信息以保存的过程数据以备将来使用。例如,许多国家图书馆运

简记_Altium Designer 自定义原理图模板

目录一、自定义原理图模板1.1、系统参数设置1.2、新建空白的原理图文件1.3、修改图纸尺寸及模板1.4、取消当前原理图模板1.5、绘制新的标题栏1.6、保存为新的模板文件二、使用原理图模板2.1、模板文件映射2.2、在新建的原理图中使用自定义模板2.3、模板的更新概述:——若您做为硬件工程师,往往需要制定原理图模板,以便于规范原理图的绘制。下文将是对这项工作,AltiumDesigner 自定义原理图模板 软件操作的一个较详细阐述。一、自定义原理图模板1.1、系统参数设置如下图,设置 默认空白纸张模板及尺寸:Nodefaulttemplatefile   A31.2、新建空白的原理图文件1.

c++ - 接口(interface),绝对就是纯虚函数,或者...?

每次我读到接口(interface)时,都会提到它从来没有任何数据成员或实现。但是当我看到带有接口(interface)的代码时,它们两者都有。classIInterface{public:IInterface(){}virtual~IInterface(){}intgetInt(){returnm_int;}virtualvoidBoo()=0;intm_int;};classcInterface:publicIInterface{public:virtualvoidBoo(){printf("definedin.cppforreadability\n");};};classcFoo

c++ - 在公共(public)接口(interface)中使用共享指针

我们有一个使用共享指针的非常标准的树API,大致如下所示(为简洁起见省略了实现):classnode;usingnode_ptr=std::shared_ptr;classnode:publicstd::enable_shared_from_this{std::weak_ptrparent;std::vectorchildren;public:virtual~node()=default;virtualvoiddo_something()=0;voidadd_child(node_ptrnew_child);voidremove_child(node_ptrchild);node_pt