问题标签 [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.
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 中看到的这个错误是:
有任何想法吗?谢谢
function - 使用列表 cons 运算符 (a :: b) 作为函数
F# 允许您通过用 : 包围运算符将它们转换为函数,(
)
例如(+)
is 类型int -> int -> int
。
是否可以使用 list cons 运算符来做到这一点::
?
它的行为不像普通的二元运算符:
该List.Cons
方法采用一个元组;它不是咖喱。
(能够做到这一点很有用。例如,您可以使用它来实现map 方面的 fold)。
c++ - c ++:为稀疏矩阵重载+运算符
我正在创建一个稀疏矩阵,它由矩阵项的单链表组成的arrayList(矩阵项包含行、列和值)。我在重载 + 运算符时遇到问题。我有一个 add 方法可以正常工作,但是当我尝试使用它来重载 + 运算符时,我收到以下错误:
这是我对重载 + 运算符的实现:
main 中给出错误的行是 c = a + b (a、b、c 都是稀疏矩阵)。请注意,如果我执行 a.add(b,c) 一切正常。我还重载了 = 运算符,该运算符在我执行 a = b 等操作时起作用,但它似乎在我发布的错误消息中抱怨它。我真的不确定问题是什么。有任何想法吗?
binary - bison中应该如何定义二元运算符?
我正在用 Bison 用 C 语言编写一个解析器,虽然它似乎在我迄今为止尝试过的所有情况下都能正常工作,但我的二元运算符(以及我的一元 NOT 运算符作为出色地)。
当我通过 bison --verbose 运行我的 .y 文件时,我看到:
我没有看到任何实际解析二进制运算符的问题,但似乎我应该无论如何都应该解决移位/减少问题。我不知道冲突在哪里—— set_existence 产生似乎完全不相关。我最好的猜测(在黑暗中拍摄)是它可能与 EQ 用作二元运算符(相等比较)以及赋值(例如,“foo = bar = baz;”将设置根据 bar 和 baz 是否相等,将 foo 设置为 true/false)。如果我将相等比较更改为 == ("foo = bar==baz;"),我的解析器会按预期运行,但仍然存在相同的移位/减少冲突。
编辑:我确实指定了关联性:
c++ - C++中运算符=的继承问题
我在继承 operator= 时遇到问题。为什么这段代码不起作用,修复它的最佳方法是什么?
c# - 如何在 C# 3.5 的超类中定义强制转换运算符?
我有一个容器类,用于向标准数据类型(如 int、string 等)添加一些属性。这个容器类封装了这样一个(标准类型)对象的对象。然后其他类使用容器类的子类来获取/设置添加的属性。现在我希望子类可以在其封装的对象和自身之间隐式转换,而无需额外的代码。
这是我的课程的简化示例:
我真正的容器类有两个类型参数,一个用于封装对象的类型(string、int、...),另一个用于子类类型(例如 SubClass)。
如何制作代码
可通过子类中的最少代码运行?
c++ - 运算符重载和命名空间
可能重复:
非成员运算符重载应该放在哪里?
在浏览 SO 时,我经常发现涉及重载/定义 astd::ostream& operator<<(std::ostream& os, const Foo& foo)
或 a 的问题或答案Foo operator+(const Foo& l, const Foo& r)
。
虽然我知道如何以及何时(不)编写这些运算符,但我对此感到困惑namespace
。
如果我有以下课程:
我应该在namespace
哪里写不同的运算符定义?
同样的问题也适用于operator+
. 那么,这里有什么好的做法,为什么?
python - Python“++”运算符不起作用
可能重复:
Python:递增和递减运算符的行为
你好,这个我试过了。
并且 num 完全没有变化,总是在初始化时显示值
如果我++num
改为num+=1
然后它工作。
所以,我的问题是那个++
操作员是如何工作的?
binary - ANTLR:区分一元和二元运算符的问题(例如减号)
我正在使用 ANTLR (3.2) 来解析一些相当简单的语法。不幸的是,我遇到了一个小问题。采取以下规则:
OPERATOR 包含与用 MINUS 定义的相同的减号 ('-')。现在 ANTLR 似乎无法处理这两个规则。如果我删除任何一个,一切正常。
任何人的想法?
c++ - 在 C++ 中的泛型类上重载 + 运算符
我试图在森林类中重载 + 运算符,森林是树木的集合,而 + 运算符应该将两个森林合并为一个。我有以下代码作为我的类定义:
以下是我对operator+的实现:
我在编译时收到以下错误:
第 28 行是我的 operator+ 实现的签名。
我认为要纠正它,我应该添加到返回类型中,给出:
但这给了我以下错误:
谁能帮我这个?我会非常非常感谢。