multiple-interface-implem
全部标签 在C++上使用接口(interface)(抽象类)我需要强制任何类而不是继承接口(interface)来实现运算符==。考虑这种情况:classIBase{virtualvoidsomeFunc()const=0;}classCInheritClass:publicIBase{virtualvoidsomeFunc()const;virtualbooloperator==(constCInheritClass&obj)const;}voidmain(){CInheritClassinstance;}类CInheritClass必须实现someFunc因为它继承了Ibase,实现了vir
我正在开发一个灵活的GUI应用程序,它可以有大约12种不同的布局。这些布局都是明确定义的,不会改变。每个布局都包含多个使用位模式与DLL交互的小部件。虽然大多数小部件是相同的,但使用的位模式因呈现的界面类型而异。我的直觉是使用继承:定义一个通用的“面板”并为不同的配置创建子类。但是,接口(interface)的某些部分是用户定义的,并且规范为在XML文件中指定。应该用XML定义整个面板,还是只定义用户配置的部分? 最佳答案 YAGNI:根据当前要求设计屏幕,您明确声明不会更改这些要求。如果一年后需要更多定制,然后让它更可定制,而不是
我正计划做一个C++插件接口(interface)alaHowtocreatesomeclassfromdll(constructorindll)?(с++)但有人担心,如果该接口(interface)用于通过MinGW或Borland创建DLL,并且DLL加载程序是使用MSVC++编译的,则可能会出现问题。由于唯一导出的函数被声明为extern"C"我不明白为什么它不起作用?想法? 最佳答案 如果您想跨编译器(和发布/调试)兼容并使用C++,您需要付出更多努力。基本上-您可以传递基本数据类型和指向纯虚拟类的指针。这些类不得包含任何
Asitcurrentlystands,thisquestionisnotagoodfitforourQ&Aformat.Weexpectanswerstobesupportedbyfacts,references,orexpertise,butthisquestionwilllikelysolicitdebate,arguments,polling,orextendeddiscussion.Ifyoufeelthatthisquestioncanbeimprovedandpossiblyreopened,visitthehelpcenter提供指导。已关闭8年。我坚信以下设计理念:1
STL为什么要为Allocator预留接口(interface)?以vector为例:template>classvector;因为我们有很多选择来分配内存和构造对象,比如operatornew,delete,new[],delete[],它几乎可以做我们创建对象时需要做的任何事情。那么,为什么像vector这样的STL容器需要一个Allocator接口(interface),如果我们不分配一个,它在大多数情况下都是默认的std::allocator?为什么不直接使用新的表达式呢?如果目的是使用户定义的分配行为成为可能,为什么不让用户提供他们自己定义的operatornew、new[]
我在C++中使用伪接口(interface),即纯抽象类。假设我有三个接口(interface),IFoo、IBar和IQuux。我还有一个Fred类实现了所有这三个:interfaceIFoo{voidfoo(void);}interfaceIBar{voidbar(void);}interfaceIQuux{voidquux(void);}classFred:implementsIFoo,IBar,IQuux{}我想声明一个方法,它接受任何实现IFoo和IBar的对象——例如,Fred就可以。我能想到的唯一编译时方法是定义第三个接口(interface)IFooAndBar来实现这
做一个以人类可读的方式将.NETIL翻译成C++的实验。这里是问题所在:C#允许您解析具有相同方法名称但返回类型不同的多个接口(interface)。C++似乎不支持这一点,但是使用vTable无法解析两个接口(interface)(或者我错了吗?)。我找到了一种使用模板在C++中复制C#方法的方法,但想知道是否有一种方法不需要模板来解决相同的问题?模板很冗长,我如果可能,我不希望将它们用于每种接口(interface)类型。这是C++版本。templateclassIMyInterface{public:short(T::*Foo_IMyInterface)()=0;};templa
在C++中,假设我有一个实现接口(interface)类BaseInterface的类Derived,其中BaseInterface只有纯虚函数和一个虚析构函数:classBaseInterface{public:virtualvoiddoSomething()=0;~BaseInterface(){}};classDerived:publicBaseInterface{public:Derived(){}~Derived(){}protected:virtualvoiddoSomething();private:intx;};Derived类层次结构之外的任何类都不应直接调用Deri
我有一个抽象基类,想在派生类中实现一个函数。为什么我必须在派生类中再次声明函数?classbase{public:virtualintfoo(int)const=0;};classderived:publicbase{public:intfoo(int)const;//Whyisthisrequired?};intderived::foo(intval)const{return2*val;} 最佳答案 考虑派生类定义可能在header中,而其实现可能在源文件中。header通常包含在多个位置(“翻译单元”),每个位置都将独立编译。如
在C++中,我可以动态创建接口(interface)的实现吗(理想情况下绑定(bind)局部范围变量。)不确定如何更好地解释它,所以我将写下我希望代码看起来像什么(大致)://Giventhefollowing:classVisitor{virtualvoidvisit(constData&data)=0;}classDataStore{voidvisitData(Visitor&visitor){/**Invokesvisitorwitheachitemofdata.*/}}//Imagineonewouldwritesomethinglike:voidinSomeFunction(