草庐IT

继承权

全部标签

c++ - 类模板多重继承和函数重载

为什么下面main中对waitForEvent的函数调用不明确?#includestructEvent1{charc1[1];};structEvent2{charc2[2];};templatestructEventSource{voidwaitForEvent(Evente){std::coutEvent1Source;typedefEventSourceEvent2Source;structEvent12Source:publicEvent1Source,publicEvent2Source{};intmain(){Event12Sourcesource;source.waitF

c++ - 为什么我不能使用继承来实现C++中的接口(interface)?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:ImplementingabstractclassmembersinaparentclassWhydoesC++notletbaseclassesimplementaderivedclass'inheritedinterface?考虑这些对象:structA{virtualvoidfoo()=0;};structB{voidfoo(){/*neatimplementation*/}};我想知道为什么--compiler-wise--以下对象被认为是抽象的:structC:B,A{usingB::foo;//I

C++ 接口(interface)、继承、多态性

想象一下这个场景:接口(interface)I1:m1(),由C1类实现接口(interface)I2:m2(),由C2类实现接口(interface)I3:m3(),由C3类实现我想定义接受参数arg的函数。voidf1(I1arg){usem1()}voidf2([I1,I2]arg){usem1()andm2()}voidf3([I2,I3]arg){usem2()andm3()}然后我要定义:一个“union”接口(interface)I123,它具有所有方法,由C123实现一个“union”类C123,它继承现有类C1、C2、C3的实现方法。然后我想实例化C123并将其与f1

c++ - 使用继承函数打印派生类的类名

有没有什么方法可以在不覆盖派生类中的函数的情况下打印具有继承函数的派生类的类名?classA{public:virtualvoidprint(){printf("%s",__PRETTY_FUNCTION__);}};classB:publicA{};intmain(){Bb;b.print()//shouldyield"B::print()"butyields"A::print()"}我要求这样我就可以在重写的函数中调用A::print()来打印与父类相关的属性,但包括当前类名。 最佳答案 __PRETTY_FUNCTION__创

c++ - 在多态性增加派生类大小的多重继承的情况下,在派生类中为析构函数编写代码。为什么?

#includestructBase1{public:virtualvoidshow()=0;};structBase2{public:virtualvoidDisplay()=0;};classDerived:virtualpublicBase1,virtualpublicBase2{public:virtualvoidshow(){}virtualvoidDisplay(){}};voidmain(){usingnamespacestd;cout输出显示12但是当我插入Dervied类的析构函数时,即以下代码#includestructBase1{public:virtualvoi

c++ - 继承一个带有内部类的模板类,并在继承类中访问内部类

我有一个模板类“BinaryHeap”,它还在自身内部声明了一个公共(public)类“Item”。现在我想用用于元素查找的散列扩展BinaryHeap,因此继承了它。我将其称为“HashedBinaryHeap”,它应该使用与BinaryHeap相同的Item类。stub看起来像这样:templateclassBinaryHeap{public:classItem{...};...voidappendItem(constItem&item);...};templateclassHashedBinaryHeap:publicBinaryHeap{public:...voidappend

c++ - 如何通过继承专门化复杂模板 - C++

我似乎找不到合适的语法来特化这个模板:templateclassTSin:publicBasicTween{...我想保留作为模板参数,但特化所有其他参数。我正在尝试这样:templateclassTSin{...这会产生错误。有人可以提供正确的语法来专门化模板和实例化专门版本的语法吗? 最佳答案 我认为您的代码应该如下所示:http://ideone.com/cvGy3您需要为类实例化定义所有类型。 关于c++-如何通过继承专门化复杂模板-C++,我们在StackOverflow上找到

c++ - 一个类继承自两个类,具有相同的函数原型(prototype),相互冲突

我正在处理光线追踪任务,这是有问题的来源:classGeometry{public:virtualRayTask*intersectionTest(constRay&ray)=0;};classSphere:publicGeometry{public:RayTask*intersectionTest(constRay&ray);};classBoundingVolume{public:virtualboolintersectionTest(constRay&ray)=0;};classBoundingSphere:publicSphere,BoundingVolume{public:b

c++ - 什么是多重虚拟继承?

classfoo:publicvirtualbar,publicvirtualkung{//implementationofthemethodoftheaboveinheritedclass};bar和kung类是一个抽象类,包含在foo类中实现的纯虚方法。这个有什么用? 最佳答案 在你的情况下,如果bar和kung是最派生的基类,只要bar和kung中没有方法冲突,你就会知道它,即编译器在模糊定义中的错误。有关此内容的更多信息,请访问c++常见问题解答:http://www.parashift.com/c++-faq-lite/m

c++ - 使用多重继承实现Entity-Component编程

我读过几篇关于实体组件编程风格的文章。常见的问题之一是如何表达组件之间的依赖关系,以及与同一实体相关的组件如何通信。在我看来,这个问题的一个简单解决方案是使每个依赖项成为其依赖项的虚拟基类。这样,当一个组件包含在一个实体中时(通过虚拟继承),所有依赖的组件都只包含一次。此外,组件所依赖的所有功能都将在其成员函数中可用。classC_RigidBody:publicvirtualC_Transform{publicvoidtick(floatdt);};classC_Explodes:publicvirtualC_Transform{publicvoidexplode();};class