问题标签 [named-constructor]
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.
c++ - 命名构造函数习语和继承
我有一些带有一些命名构造函数的类。当我从它们继承时,我应该如何继承构造函数?问题是它们返回基类的对象而不是子类的对象。
附带问题:我可以使用 C++0x“使用”来减少样板代码的数量吗?
c++ - 使用 istream 作为参数的命名构造函数的问题
我正在尝试为我的类 Matrix 创建一个命名构造函数,输入作为流,我可以从中读取初始化值。
该方法应该或多或少像这样实现
但是,在编译时,我在方法的声明中遇到错误(第 74 行是定义原型的地方,第 107 行是开始实现的地方)
但是,在使用简单参数(如 int)定义和实现命名构造函数时,我不会遇到这些错误。
我错过了什么?任何帮助将不胜感激。
scala - Scala中的命名构造函数?
Scala中有命名构造函数吗?
c++ - 向类的构造函数添加虚拟参数以解决调用歧义是否违反任何规则?
采用以下类和两个对象定义:
之前的两个构造函数具有虚拟枚举参数,以解决在这些虚拟参数不存在的情况下导致的调用歧义。现在尽管有可能在这里使用命名构造函数,但如果我坚持使用这些虚拟参数,这是否违反了我应该注意的任何编码规则?
c++ - 模板、接口(多重继承)和静态函数(命名构造函数)
设置
我有一个图形库,我试图在其中尽可能多地分解事物,我发现的最简洁的描述方式如下:有一个node
仅实现边列表的 vanilla 类型:
然后,我希望能够为整个组合添加接口,如下所示:
等等。然后,实际的图形类进来了,它以实际的节点类型为模板:
不同之处在于它命名了构造一些特殊图形的构造函数,比如笛卡尔格。在这种情况下,我希望能够在图中添加一些额外的信息,具体取决于node_T
.
实现这一目标的最佳方法是什么?
可能的解决方案
我想到了以下不起眼的解决方案,通过dynamic_cast<>
:
这将在node_T
以下情况下运行:
问题
从哲学上讲,这是正确的方法吗?我知道人们不喜欢多重继承,尽管像这样的“接口”应该没问题。
不幸的是,这存在一些问题。至少据我所知,dynamic_cast<>
涉及相当多的运行时开销。因此,我遇到了我之前解决的问题:编写需要权重的图形算法,而与实际node_T
类是否具有权重无关。这种“接口”方法的解决方案是编写一个函数:
但它的问题是它使用运行时信息(dynamic_cast
)工作,但原则上我想在编译时决定它,从而使代码更有效率。
如果有一种不同的解决方案可以解决这两个问题,尤其是比我拥有的更清洁、更好的解决方案,我很想听听!
c++ - 命名构造函数和临时生命周期延长
我正在寻找一种定义“基础”构造函数的方法,它将使用默认值初始化值,然后将该基础扩展到许多专门的构造函数。
我想要的伪代码可能如下所示:
起初,我考虑延长临时的生命周期f
,但 const 声明阻止我编辑它的成员。所以这似乎已经结束了。
然后我尝试了“命名构造函数”方法(如上所示)。但是,我必须先修改示例以创建对象,然后修改它,然后返回它。这似乎可行,但我有理由相信这只是巧合,因为它f
是暂时的,并且在函数结束时超出了范围。
我也考虑过使用auto_ptr
s 之类的东西,但是我同时使用 Foo 对象以及auto_ptr
s 到 Foo,这使得其余代码“关心”对象是否是通过基本构造函数创建的(在这种情况下它将是一个对象)或通过扩展构造函数之一(在这种情况下它将是一个指针)。
如果它有帮助,在 Python 中,我会使用这样的东西:
最后,我想这样做有两个原因:
- 代码重用,我想将公共初始化从每个构造函数中移出并移入一个。我意识到我可以
init()
通过每个构造函数调用的 -type 私有方法来做到这一点,但我只想提一下。 - 清晰并解决歧义。与命名构造函数示例的动机非常相似,参数类型本身不足以确定应该使用哪个 ctor。此外,
fromSomething
语法提供了极好的清晰度。
如果有一个简单的解决方案,请原谅我,过去几年我的工作已经从 c++ 转移到 Java/Python,所以我有点生疏了。
python - 在工厂方法中返回什么?
我有一个类Node
,我希望它有多个构造函数。
我在网上阅读有关工厂方法的信息,显然,这是实现构造函数的最简洁的 Pythonic 方式。到目前为止,我的课程如下所示:
我应该回到这里做什么?我在网上看到的所有例子都只有一个作业,他们会返回那个作业。我有三个任务。什么适合返回这里?
python - python - 使用命名列(和数据类型)初始化一个空数组
我有三个约束,而且,像往常一样,我只能弄清楚如何同时满足其中任何两个:
- 多维数组
- 命名列
- 不同的列包含不同的数据类型(因此 col 1 中的所有内容都是字符串,但 col 2 都是 Decimal 等)
我目前正在使用 numpy ndarrays 在每列中存储不同类型的数据。我已经初始化了数组,以便它可以存储多种数据类型:
我一直在使用标题(字符串名称列表)作为列名的代理(然后在标题中查找值的索引),但这看起来很笨拙。
我环顾四周,但据我所知,当您使用列名(和类型)初始化数组时,您必须在这样做时用值填充数组,如:Store NumPy Row and Column Headers
因为当我尝试这样的事情时:
我收到此错误:
php - 在命名构造函数中创建文件
我有一个通过命名构造函数创建文件的类,但是当我使用 phpspec 对其进行测试时,它不会创建文件。
我找不到原因,所以我想重新审视我的代码可能会有所帮助。
这是我的文件类:
这是我的规格:
php - 具有继承和类型提示的静态工厂模式
我正在尝试创建一个Developer
作为Person
.
我希望他们都使用静态工厂模式(或“命名构造函数”)。
我见过这种模式的一些例子,但没有一个使用继承。
问题 1
在示例中,他们使构造函数方法始终为私有。
是否可以对其进行保护以便从子构造函数中调用?
或者我应该解决使构造函数始终私有的问题,并尝试构建create
从子create
方法调用父方法的继承?
问题 2
当我尝试实例化 Person 或 Developer 类时,我收到以下错误。为什么?
当我删除这: self
两种方法中的类型提示时它会起作用create
,但我不明白为什么它们不兼容,如果Developer
是Person
.
提前致谢。