问题标签 [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.

0 投票
6 回答
510 浏览

c# - 重载构造函数时如何避免 NullReferenceException?

为了更好地解释我的情况,我做了一个例子

在这种情况下,我NullReferenceException在第二个构造函数中得到了一个。有没有办法从方法内部处理它,保持相同的结构,或者我应该创建一个私有方法并让两个构造函数都调用这个方法?

0 投票
2 回答
1268 浏览

lambda - 如何在 kotlin 中重载构造函数的 lambda 返回类型不同

我有两个构造函数,它们的不同之处仅在于它们的 lambda 返回类型。有没有办法让它们超载?我试图使用JvmOverloads注释,但它不起作用。

0 投票
2 回答
11604 浏览

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?

0 投票
1 回答
39 浏览

c++ - 尝试支持文字时构造函数重载歧义

代码


描述

MyContainer<Type>(Type & a)适用于大多数事物。但是,它不适用于文字(例如1.732)。这就是为什么我添加了一个MyContainer<Type>(Type a). 但是,通过添加这个,我最终会产生歧义,因为非文字可以使用任一构造函数。


问题

有没有办法满足给构造函数的所有参数(文字和非文字)?

0 投票
1 回答
105 浏览

java - 如何绕过 Java 中不存在的默认参数/如何将方法重载与可能的字段一起使用?

我知道 Java 中的方法没有默认参数,这可以通过使用方法重载来解决,就像在这个问题中一样。

但是,我有一个包含大约 20 个字段的类,我应该能够使用这些字段的任意组合创建该类:

该类将创建一个 http 请求的主体,因此构造函数获取的任何字段都将在请求主体中具有值,其他应为空字符串。可能只有一个字段,假设我在“标题”字段中给出,所有其他字段都是空的,但我可能会为 10+ 字段赋值。

我的问题可以通过使用空字符串作为默认参数来解决,但这在 Java 中不起作用。如果我为每种可能的情况编写一个构造函数,我最终会编写数百个,所以这显然不是要走的路。

0 投票
1 回答
1747 浏览

c++ - C ++中有便利构造函数吗?

重载的构造函数是否有可能以某种方式调用类中的另一个构造函数,类似于下面的代码?

上面的代码有效,但我担心在构造函数中调用它可能会导致未定义的行为。

如果确实如此,您能否解释一下原因并提出更好的替代方案?

0 投票
3 回答
220 浏览

c++ - 声明/参数相同时如何重载构造函数/函数?

我想创建一个类来管理矩阵,但构造函数遇到了问题。目的是找到调用 Matrix 对象的构造函数的最短方法,因为知道某些构造函数具有与保持清晰相同的标题。这是我试图得到的想法:

在这里,所有参数都是floats 所以我不能重载构造函数,我看到的唯一一件事是使用模板,但仅适用于那些特殊情况,我不知道该怎么做。

解决方案

最后我决定做一个这样的抽象类:

所有都将被定义_Mat,另一个类将对其构造函数有用

最后,我们可以像这样调用构造函数:

0 投票
2 回答
131 浏览

c++ - 构造函数重载以接受任何函数

我正在尝试创建一个类模板,其构造函数可以将任何类型的函数作为参数,也就是说,它需要一个函数指针(可以是成员函数指针)和相应的函数参数。此外,应该有一个static_assert检查函数返回类型(取自函数指针)是否与类模板参数类型匹配。因此,代码应如下所示:

这个想法是代码针对这些情况进行编译,并允许Bar::function_(通过函数调用运算符)无错误地调用:

不幸的是,我在模板元编程方面的经验几乎为零,即使我在 SO 中遇到了几个问题,并尝试了几种解决问题的方法,例如对构造函数使用更通用的方法

并结合它type_traits来确定返回类型),我还没有找到一种方法来完成这项工作。我可以对允许此功能的构造函数进行哪些更改?

编辑:

max66 的回答解决了我原来的问题,但是,出现了一个新问题,我在上一个问题中没有考虑过。我还希望能够将变量传递给构造函数,如下所示:

但是,实际上,在标有 的情况下会出现编译器错误Error。我猜这是因为func构造函数中的参数用于确定其类型(在 and 的情况下与实际的 s不ParamType匹配),但我不知道如何解决这个问题......ParamTypeb1b4

0 投票
1 回答
358 浏览

c# - 泛型构造函数中的重载解析

我创建了一个模型类来说明这个问题:

如果我构建任何字符串对象怎么办?没有办法区分这两个构造函数。用相同数量的参数定义另一个构造函数是一种不好的做法?

两个构造函数看起来相等

0 投票
3 回答
4968 浏览

python - 如何在python中实现多个构造函数?

在 python 中,不能多次定义init函数,这在了解语言如何工作的情况下是相当公平的。当一个对象被创建时,init会被调用,因此,拥有两个对象会产生不确定性。然而,在某些设计中,这种特性是合乎需要的。例如:

在这种情况下,我们要初始化相同数量的属性,并且它们是相关的,因此您可以从一个中获得另一个。确实,在这个特定示例中,可以使用顶点是元组而边可能是浮点数的事实(或字符串或其他东西)但当然并非总是如此。

一种可能的解决方案是将初始化过程委托给其他函数,例如:

但它看起来不是很干净,并且像“区域”这样的所有功能都必须检查属性是否正确实例化(或采用 try/catch),这是很多代码,而且它破坏了项目的可读性. 总的来说,它看起来像是一个便宜的把戏。

另一种选择是告诉实例,你要初始化什么类型的属性:

这种其他方法似乎更可取,但是我不确定在init中引入逻辑有多少“pythonic” 。你对这件事有什么看法?有没有更好的方法来协调这种情况?