问题标签 [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 投票
5 回答
1757 浏览

c++ - 如何重载 << 运算符?

我打算在任何时候调用一个函数m_logger<<"hello"<<"world"。m_logger 属于流类型。

所以我决定用以下签名重载 <<

但是vc编译器给出以下错误:

错误 C2666:“运算符 <<”:6 个重载具有类似的转换

有没有其他方法可以实现这一点,我的目标是将所有写入操作转移到 ofstream 对象到不同的功能?

创建一个我自己的对象对我有用,但是我怎样才能让它像正常的 ofstream 对象一样工作,它将所有系统定义的类型转换为字符串或 char*。我知道一种方法是重载每种类型的运算符,但有没有更简洁的方法

0 投票
4 回答
3777 浏览

c++ - ofstream 或 ostream 类型如何将所有类型转换为字符串?

过去到 ostream 对象的任何系统定义的用户类型都被转换为字符串或 char* 吗?

像 cout<<4<<"Hello World";

工作得很好,这是如何实现的?<< 运算符是否为每种类型重载?有没有办法通过一个通用的重载函数来实现它?我的意思是我可以只有一个带有一个参数的重载运算符方法(如 void*),然后在该方法内部决定如何将整数类型转换为 char*

如果我使用模板重载运算符 << ,事情就会部分起作用,即

所以这行得通

但是当我这样做时它会给出编译器错误

错误 C2678:二进制“<<”:未找到采用“UIStream”类型左侧操作数的运算符(或没有可接受的转换)

std::endl 不也是一种对象吗?

0 投票
4 回答
30185 浏览

c++ - C++ 中的运算符重载为 int + obj

我有以下课程:-

只要我这样使用它就可以正常工作:-

但我无法做到这一点: -

任何想法,我怎么能做到这一点?

0 投票
3 回答
4302 浏览

c++ - C++ 运算符重载 - 从类强制转换

在将 Windows 代码移植到 Linux 时,我在 GCC 4.2.3 中遇到了以下错误消息。(是的,我知道这是一个稍微旧的版本,但我不能轻易升级。)

我正在使用以下代码来生成此错误。

有没有人遇到过这个错误?更重要的是,如何绕过它?(当然,通过使用 等函数可以完全避免过载,GetChar()GetList()我想避免这种情况。)

(顺便说一句,删除“ operator unsigned char()”会删除错误。)

0 投票
1 回答
343 浏览

subsonic - 导致问题的表和列名称

当 T4 linq 模板使用 subsonic 3 为我的 MySql db 生成类时,我遇到了问题。

看起来我们的表名之一“operator”导致 Context.cs 生成的类出现问题。在 Context.cs 中的以下代码行中,Visual Studio 将<operator>其视为 ac# 运算符并生成“预期类型”的编译错误

无论如何我可以解决这个问题而不必重命名我的数据库表和列名?例如,在 Settings.ttinclude 中对某些内容进行硬编码以使用或将不同的名称映射到特定的数据库表和列?

0 投票
4 回答
3737 浏览

c++ - 在 C++ 迭代器类中重载 *(iterator + n) 和 *(n + iterator)?

(注意:我写这个项目只是为了学习;关于它是多余的评论是......呃,多余的。;)

我正在尝试实现一个随机访问迭代器,但我发现关于这个主题的文献很少,所以我将通过反复试验结合维基百科的运算符重载原型列表。到目前为止它工作得很好,但我遇到了一个障碍。

代码如

工作,并打印字符串的第一个字符。但是,*(i + 1) 不起作用,*(1 + i) 也不起作用。我的完整实现显然有点太多了,但这是它的要点:

以上失败(第 632 行当然是 *(i + 2) 行):

string.cpp:在函数'int main()'中:string.cpp:632:错误:'*exscape::string::iterator::operator+(int)(2)'字符串中的'operator*'不匹配。 cpp:105: 注意:候选人是:char& exscape::string::iterator::operator*()

*(2 + i) 失败:

string.cpp:在函数'int main()'中:string.cpp:632:错误:'2 + i'中的'operator +'不匹配string.cpp:434:注意:候选者是:exscape :: string exscape: :operator+(const char*, const exscape::string&)

我的猜测是我需要做更多的重载,但我不确定我缺少哪个运算符。

0 投票
2 回答
390 浏览

c++ - 速度差异:在一个大类中使用 *this 分离函子 VS 运算符()

我正在使用 c++ STL 堆算法,并且我围绕它编写了一个包装类,这样我就可以做一些其他的事情。当我尝试使用下面的代码时,例如:

它比我有这样一个单独的函数对象时要慢得多:

我不确定这是为什么。减速来自 *this 是因为该类有很多数据吗?这似乎很奇怪。还是与函数对象的使用方式有关?

0 投票
6 回答
22480 浏览

c++ - 声明函数对象进行比较?

我见过其他人的问题,但没有发现适用于我在这里想要实现的目标。

我正在尝试使用 std::sort 和 a 通过我的 EntityManager 类对实体进行排序std::vector<Entity *>

我收到了十几个错误,例如

我不确定,但 ENTITY_VECTOR 是std::vector<Entity *>,我不知道在使用 compareByX 函数对象时是否会出现问题?

我对 C++ 很陌生,所以欢迎任何形式的帮助。

0 投票
6 回答
35180 浏览

c++ - C++ [] 具有多个参数的数组运算符?

我可以在 C++ 中定义一个接受多个参数的数组运算符吗?我试过这样:

但我收到了这个错误:

0 投票
4 回答
257 浏览

c++ - 使用 operator+ 而不泄漏内存?

所以有问题的代码是这样的:

这当然会将 String 放在堆栈上,它会被删除并返回垃圾。将它放在堆上会泄漏内存。那么我该怎么做呢?