问题标签 [operator-keyword]

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 投票
3 回答
2252 浏览

c++ - C++:自定义数据类型 - 类型转换和联合问题

我想做的是创建一个新的自定义数据类型,它的行为与所有其他原始类型一样。具体来说,这种数据类型看起来像一个定点分数。我创建了一个类来表示这种数据类型,称为“class FixedPoint”,其中有一些方法可以将“FixedPoint”类型转换为“int”或“double”或“unsigned int”等。这很好。

现在,如果我想从中转换"int" to "FixedPoint"怎么办?最初我的解决方案是有一个构造函数:

这行得通......但你不能像这样把它放到一个联合中:

这会中断,因为“FixedPoint”没有隐式的普通构造函数(我们刚刚定义了一个构造函数,“FixedPoint(int i)”)。

总而言之,整个问题是“我们想要cast from some type T to type FixedPoint without explicitly defining a constructor在联合中使用我们的 FixedPoint 类型”。

我认为解决方案是但无法在线找到任何证据:定义一个重载的全局类型转换运算符以从“int”转换为“FixedPoint”。

有没有办法在不使用类构造函数的情况下做到这一点?我希望能够在联合中使用这个类。我尝试过的(在全球范围内):

还有一个小例子表明联合不喜欢构造函数(他们喜欢 POD)

在 Visual Studio 中看到的这个错误是:

有任何想法吗?谢谢

0 投票
3 回答
3111 浏览

function - 使用列表 cons 运算符 (a :: b) 作为函数

F# 允许您通过用 : 包围运算符将它们转换为函数,( )例如(+)is 类型int -> int -> int

是否可以使用 list cons 运算符来做到这一点::

它的行为不像普通的二元运算符:

List.Cons方法采用一个元组;它不是咖喱。

(能够做到这一点很有用。例如,您可以使用它来实现map 方面的 fold)。

0 投票
2 回答
1094 浏览

c++ - c ++:为稀疏矩阵重载+运算符

我正在创建一个稀疏矩阵,它由矩阵项的单链表组成的arrayList(矩阵项包含行、列和值)。我在重载 + 运算符时遇到问题。我有一个 add 方法可以正常工作,但是当我尝试使用它来重载 + 运算符时,我收到以下错误:

这是我对重载 + 运算符的实现:

main 中给出错误的行是 c = a + b (a、b、c 都是稀疏矩阵)。请注意,如果我执行 a.add(b,c) 一切正常。我还重载了 = 运算符,该运算符在我执行 a = b 等操作时起作用,但它似乎在我发布的错误消息中抱怨它。我真的不确定问题是什么。有任何想法吗?

0 投票
1 回答
3277 浏览

binary - bison中应该如何定义二元运算符?

我正在用 Bison 用 C 语言编写一个解析器,虽然它似乎在我迄今为止尝试过的所有情况下都能正常工作,但我的二元运算符(以及我的一元 NOT 运算符作为出色地)。

当我通过 bison --verbose 运行我的 .y 文件时,我看到:

我没有看到任何实际解析二进制运算符的问题,但似乎我应该无论如何都应该解决移位/减少问题。我不知道冲突在哪里—— set_existence 产生似乎完全不相关。我最好的猜测(在黑暗中拍摄)是它可能与 EQ 用作二元运算符(相等比较)以及赋值(例如,“foo = bar = baz;”将设置根据 bar 和 baz 是否相等,将 foo 设置为 true/false)。如果我将相等比较更改为 == ("foo = bar==baz;"),我的解析器会按预期运行,但仍然存在相同的移位/减少冲突。

编辑:我确实指定了关联性:

0 投票
5 回答
6681 浏览

c++ - C++中运算符=的继承问题

我在继承 operator= 时遇到问题。为什么这段代码不起作用,修复它的最佳方法是什么?

0 投票
1 回答
978 浏览

c# - 如何在 C# 3.5 的超类中定义强制转换运算符?

我有一个容器类,用于向标准数据类型(如 int、string 等)添加一些属性。这个容器类封装了这样一个(标准类型)对象的对象。然后其他类使用容器类的子类来获取/设置添加的属性。现在我希望子类可以在其封装的对象和自身之间隐式转换,而无需额外的代码。

这是我的课程的简化示例:

我真正的容器类有两个类型参数,一个用于封装对象的类型(string、int、...),另一个用于子类类型(例如 SubClass)。

如何制作代码

可通过子类中的最少代码运行?

0 投票
5 回答
10306 浏览

c++ - 运算符重载和命名空间

可能重复:
非成员运算符重载应该放在哪里?

在浏览 SO 时,我经常发现涉及重载/定义 astd::ostream& operator<<(std::ostream& os, const Foo& foo)或 a 的问题或答案Foo operator+(const Foo& l, const Foo& r)

虽然我知道如何以及何时(不)编写这些运算符,但我对此感到困惑namespace

如果我有以下课程:

我应该在namespace哪里写不同的运算符定义?

同样的问题也适用于operator+. 那么,这里有什么好的做法,为什么

0 投票
2 回答
5848 浏览

python - Python“++”运算符不起作用

可能重复:
Python:递增和递减运算符的行为

你好,这个我试过了。

并且 num 完全没有变化,总是在初始化时显示值

如果我++num改为num+=1然后它工作。

所以,我的问题是那个++操作员是如何工作的?

0 投票
1 回答
4015 浏览

binary - ANTLR:区分一元和二元运算符的问题(例如减号)

我正在使用 ANTLR (3.2) 来解析一些相当简单的语法。不幸的是,我遇到了一个小问题。采取以下规则:

OPERATOR 包含与用 MINUS 定义的相同的减号 ('-')。现在 ANTLR 似乎无法处理这两个规则。如果我删除任何一个,一切正常。

任何人的想法?

0 投票
4 回答
3682 浏览

c++ - 在 C++ 中的泛型类上重载 + 运算符

我试图在森林类中重载 + 运算符,森林是树木的集合,而 + 运算符应该将两个森林合并为一个。我有以下代码作为我的类定义:

以下是我对operator+的实现:

我在编译时收到以下错误:

第 28 行是我的 operator+ 实现的签名。

我认为要纠正它,我应该添加到返回类型中,给出:

但这给了我以下错误:

谁能帮我这个?我会非常非常感谢。