问题标签 [derived-class]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
2098 浏览

c++ - 有没有办法向上转换成一个抽象类并且每次从它派生一个类时都不修改它?

编译器说

由于这个问题,每次我创建一个继承自它的新派生类时,我都必须向 Abs 类添加函数(向上转换对我来说是强制性的。我计划的程序要求它是这样的)。一旦创建了基类,我就不想碰它。这个问题是不是违反了一旦你创建了一个基类,你就不必修改它的原则了。有什么办法可以解决这个问题?ps:工厂设计模式和原型设计模式我都看过,但是好像都不能解决。

0 投票
4 回答
4676 浏览

c++ - C++ 用从数组类型派生的对象填充数组

在 C++ 中,我有一个指向 Player 对象的指针数组,并希望用 Fickle 对象填充它,其中 Fickle 是从 Player 派生的类。这是因为我想要一个通用的 Player 数组,我可以填充来自不同类的不同对象,这些对象都派生自 Player 类。

我怎样才能做到这一点?

我创建了一个指向 Player 对象的指针数组

然后将数组初始化为一定大小

但是由于某种原因,以下内容不起作用:

如何用 Fickle 对象填充 playerArray(Fickel 是从 Player 派生的类)?

谢谢。

更新:

我收到错误消息(在 Eclipse IDE 中):

我认为这可能与 Fickle 的定义有关。

Fickle.hpp 文件包含:

这没问题还是有问题?

Player 类头文件有:

接收方法将在 Fickle 和其他从 Player 类派生的类中被覆盖

更新 2:

好的,我认为错误实际上是由于代码的不同部分造成的。

Player 定义了一个方法 receive:

这应该被子类 Fickle 覆盖,但 Fickle 中的定义:

给出错误:

但我不知道为什么这是因为在 Player 类中定义了接收?

0 投票
3 回答
1857 浏览

c++ - 如何在多态中调用子对象的重载函数?

考虑以下简单的多态性......

据我所知,在这两种情况下都将调用实现 A。

根据 ptr 的动态类型,如何调用 someFunc 的“最衍生”实现?

在我的真实代码中,有许多子类型,因此使用 dynamic_cast 来检查每个子类是不切实际的。

0 投票
2 回答
164 浏览

c++ - 如何使用 CLASSNAME 自动化模板类型名规范(争论);

我正在为游戏世界中的某些对象创建一个统计编辑器。我没有为每种对象类型设置多个编辑菜单,而是只有一个菜单,并传入一个 stat-edit-objects 列表/向量,其中包含指向正在编辑的 stat 的指针,以及完成工作的函数。

我的主要问题是必须指出其指针存储在模板派生类中的变量的类型。以下代码是一个小示例,但您可以假设会有数百个这样的 stat 编辑对象条目:

有没有办法让模板类型名

自动通过?

(注意:type 是 StatEditObj_INT 的构造函数的第一个参数)

0 投票
2 回答
962 浏览

c++ - 无法访问派生类c ++中的受保护变量

我有一个二叉搜索树作为二叉树的派生类,现在我正在尝试访问我的递归函数(在基类中)的根。但由于某种原因,我不断收到错误:

这是我的班级声明:

基类:

头文件(到第 31 行):

我尝试公开根目录以查看会发生什么,但我仍然遇到同样的错误。

任何帮助将非常感激!

0 投票
3 回答
15167 浏览

c++ - 不从派生类调用基类构造函数

假设我有一个基类:

和一个派生类:

当我创建的 derClass构造函数的实例baseClass被调用。我怎样才能防止这种情况?

0 投票
2 回答
3349 浏览

c++ - 从基类调用重写函数?

我的问题可能最好用一个例子来解释。

例如,我有 2 个类:一个基类和一个派生类:

当我创建 的实例时,将调用derivedClassin 的构造函数,并将从它的构造函数中调用。问题是,基类的构造函数正在调用它自己的构造函数,并且没有被派生类重写的重写。无论如何让 baseClass 调用被覆盖的函数,而不是它自己的函数定义?baseClassfoo()foo()foo()

0 投票
2 回答
164 浏览

vb.net - 派生类共享方法

我有一个函数,两个派生类使用,但第三个没有,将它留在基类中是否有意义,即使 3 个派生类之一不使用它?

我能想到的禁止第三类的唯一方法是基本上创建一个从基类派生的中间类,然后使用公共函数的 2 从第二类派生。

是否可以阻止第三类使用该功能,同时让应该使用它的两个使用它?

这是否似乎太过分了,我的意思是只要我不“尝试”从第三类调用函数,这应该不是问题,我只是对是否有办法阻止这一切感兴趣在一起没有很多麻烦。

0 投票
2 回答
17354 浏览

c++ - 从基类引用调用派生类方法

我希望这会导致“Class Unusual_Material”显示在控制台上。有没有办法可以做到这一点?在我的程序中,我有一个 Material 类,从中派生出其他更具体的材料。Material::foo() 方法表示 Material 中适用于大多数材料的方法,但有时,需要为具有不寻常属性的材料定义另一个 foo()。

我程序中的所有对象都包含一个 Material 字段。如果为它们分配了不寻常的材料,我希望调用派生的、不寻常的 foo 。

这可能很容易,或者不可能,但我无法弄清楚。

谢谢

0 投票
2 回答
1082 浏览

c++ - 从其名称的字符串生成派生类实例。(即反射)

如果我有一个基类:

并且,在一个动态加载的模块(.so/.dll)中,我实现了一个派生自这个的类:

并且,一旦这个库被加载,用户就要求创建一个实例SomethingFromBase(假设我们从 cin. 获得名称),并且,我们不知道SomethingFromBase(即,没有办法只做if(inputstr == "SomethingFrombase") { ... } 有没有办法创建SomethingFromBase 的一个实例?

我相当肯定这在(标准)C++ 中是不可能的,但是,我总是希望 SO 会让我感到惊讶!

如果通过添加一些库可以做到这一点,我仍然想知道它。谢谢!

编辑:见 cdhowie 的回答。实施该技术的指南: http ://www.linuxjournal.com/article/3687?page=0,1 http://www.abstraction.net/ViewArticle.aspx?articleID=67