首页 > TAG信息列表 > diamond-problem

C解决钻石问题

仅使用找到的第一个继承的声明就不能解决钻石问题吗?我的意思是, public class A { public virtual int getInt(); }; public class B : public A { public int getInt() {return 6;} }; public class C : public A { public int getInt() {return 7;} }; public c

黑社会不露面战斗吗? (Java Set缺少项目)

我有两家公司asoft和bsoft的代码.我也不能改变.这是我的情况的简化版本,我敢肯定,它有足够的信息来查找导致问题的原因. bsoft提供了IGang,它代表可以与其他帮派作战的帮派. package bsoft; public interface IGang { /** @return negative, 0, or positive, respectively

具有相同名称的C虚拟覆盖函数

我有类似的东西(简化) class A { public: virtual void Function () = 0; }; class B { public: virtual void Function () = 0; }; class Impl : public A , public B { public: ???? }; 如何为A实现Function()和为B实现Function()? Visual C允许您仅内

Python中的一对多继承

关于我是否以最佳方式进行某事的问题…… 我希望在Python中有一个类层次结构,它看起来(最低限度)如下所示; class Actor class Mover(Actor) class Attacker(Actor) class Human(Mover, Attacker) 但是我反对这样一个事实,即Actor有一个我想要初始化的属性,来自Mover和At

C在没有虚拟继承的情况下解决钻石继承问题

我有以下不编译的钻石类结构: class Base{ int a; public: virtual void doSomething(); }; class NotMineToTouch : public Base {}; class MyParentClass : public Base {}; class EvilDiamond : public NotMineToTouch, public MyParentClass {}; // I need these metho

c – 为什么需要超类空构造函数但不是在可怕的钻石情况下调用?

我试图实现以下设计,这是一个dreaded diamond的情况: struct super_base { super_base(int a) { b = a; } int b; }; struct base : virtual super_base {}; struct other_base : virtual super_base {}; struct derived : base, other_base { derived(int a) : super_bas

c – 您是否需要从所有派生类调用虚拟基类构造函数?即使他们不是最衍生的?

我在多重继承和钻石问题上遇到了麻烦. 出现此问题是因为我的基类构造函数需要一个参数.编译器尝试为我的两个抽象类生成默认构造函数,但这会失败,因为默认构造函数无法确定基类的参数. 我不明白为什么我的抽象类调用基础构造函数.我认为最派生的类是调用虚基类构造函数的类. 这是重

c – 为什么’虚拟’继承不是默认行为?

参见英文答案 > Why is the virtual keyword needed?                                    4个 我理解在从基类派生时使用virtual关键字的要求,以避免与钻石继承相关的歧义问题. 但是,我的问题是为什么在导出类时C不是默认行为,无论钻石问题是

c# – 界面如何解决钻石问题

我需要和你讨论一件事.我一直在阅读有关接口的信息,它是类之间的契约接口,该类将提供接口的所有方法的实现.为了解决着名的钻石问题,我们有接口. 喜欢(我正在使用C#) public interface IAInterface { void aMethod(); } public interface IBInterface { void aMethod()