问题标签 [constructor-overloading]
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# - 重载构造函数时如何避免 NullReferenceException?
为了更好地解释我的情况,我做了一个例子
在这种情况下,我NullReferenceException
在第二个构造函数中得到了一个。有没有办法从方法内部处理它,保持相同的结构,或者我应该创建一个私有方法并让两个构造函数都调用这个方法?
lambda - 如何在 kotlin 中重载构造函数的 lambda 返回类型不同
我有两个构造函数,它们的不同之处仅在于它们的 lambda 返回类型。有没有办法让它们超载?我试图使用JvmOverloads注释,但它不起作用。
c++ - C++ call of overloaded constructor is ambiguous
Let's say I have this dummy class definition:
And dummy constructor implementations for educational purposes only as well:
Now, if I compile (with options: -Wall -Weffc++ -std=c++11
) the code below:
I get this error, and does not compile at all:
I cannot understand why.
As far as I know (I am learning C++), a call to Node::Node()
should not be ambiguous with respect to Node::Node(const int)
because the have a different parameter signature.
There is something I am missing: What it is?
c++ - 尝试支持文字时构造函数重载歧义
代码
描述
MyContainer<Type>(Type & a)
适用于大多数事物。但是,它不适用于文字(例如1.732
)。这就是为什么我添加了一个MyContainer<Type>(Type a)
. 但是,通过添加这个,我最终会产生歧义,因为非文字可以使用任一构造函数。
问题
有没有办法满足给构造函数的所有参数(文字和非文字)?
java - 如何绕过 Java 中不存在的默认参数/如何将方法重载与可能的字段一起使用?
我知道 Java 中的方法没有默认参数,这可以通过使用方法重载来解决,就像在这个问题中一样。
但是,我有一个包含大约 20 个字段的类,我应该能够使用这些字段的任意组合创建该类:
该类将创建一个 http 请求的主体,因此构造函数获取的任何字段都将在请求主体中具有值,其他应为空字符串。可能只有一个字段,假设我在“标题”字段中给出,所有其他字段都是空的,但我可能会为 10+ 字段赋值。
我的问题可以通过使用空字符串作为默认参数来解决,但这在 Java 中不起作用。如果我为每种可能的情况编写一个构造函数,我最终会编写数百个,所以这显然不是要走的路。
c++ - C ++中有便利构造函数吗?
重载的构造函数是否有可能以某种方式调用类中的另一个构造函数,类似于下面的代码?
上面的代码有效,但我担心在构造函数中调用它可能会导致未定义的行为。
如果确实如此,您能否解释一下原因并提出更好的替代方案?
c++ - 声明/参数相同时如何重载构造函数/函数?
我想创建一个类来管理矩阵,但构造函数遇到了问题。目的是找到调用 Matrix 对象的构造函数的最短方法,因为知道某些构造函数具有与保持清晰相同的标题。这是我试图得到的想法:
在这里,所有参数都是float
s 所以我不能重载构造函数,我看到的唯一一件事是使用模板,但仅适用于那些特殊情况,我不知道该怎么做。
解决方案
最后我决定做一个这样的抽象类:
所有都将被定义_Mat
,另一个类将对其构造函数有用
最后,我们可以像这样调用构造函数:
c++ - 构造函数重载以接受任何函数
我正在尝试创建一个类模板,其构造函数可以将任何类型的函数作为参数,也就是说,它需要一个函数指针(可以是成员函数指针)和相应的函数参数。此外,应该有一个static_assert
检查函数返回类型(取自函数指针)是否与类模板参数类型匹配。因此,代码应如下所示:
这个想法是代码针对这些情况进行编译,并允许Bar::function_
(通过函数调用运算符)无错误地调用:
不幸的是,我在模板元编程方面的经验几乎为零,即使我在 SO 中遇到了几个问题,并尝试了几种解决问题的方法,例如对构造函数使用更通用的方法
并结合它type_traits
来确定返回类型),我还没有找到一种方法来完成这项工作。我可以对允许此功能的构造函数进行哪些更改?
编辑:
max66 的回答解决了我原来的问题,但是,出现了一个新问题,我在上一个问题中没有考虑过。我还希望能够将变量传递给构造函数,如下所示:
但是,实际上,在标有 的情况下会出现编译器错误Error
。我猜这是因为func
构造函数中的参数用于确定其类型(在 and 的情况下与实际的 s不ParamType
匹配),但我不知道如何解决这个问题......ParamType
b1
b4
python - 如何在python中实现多个构造函数?
在 python 中,不能多次定义init函数,这在了解语言如何工作的情况下是相当公平的。当一个对象被创建时,init会被调用,因此,拥有两个对象会产生不确定性。然而,在某些设计中,这种特性是合乎需要的。例如:
在这种情况下,我们要初始化相同数量的属性,并且它们是相关的,因此您可以从一个中获得另一个。确实,在这个特定示例中,可以使用顶点是元组而边可能是浮点数的事实(或字符串或其他东西)但当然并非总是如此。
一种可能的解决方案是将初始化过程委托给其他函数,例如:
但它看起来不是很干净,并且像“区域”这样的所有功能都必须检查属性是否正确实例化(或采用 try/catch),这是很多代码,而且它破坏了项目的可读性. 总的来说,它看起来像是一个便宜的把戏。
另一种选择是告诉实例,你要初始化什么类型的属性:
这种其他方法似乎更可取,但是我不确定在init中引入逻辑有多少“pythonic” 。你对这件事有什么看法?有没有更好的方法来协调这种情况?