问题标签 [conversion-operator]

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 投票
1 回答
2073 浏览

c++ - 你能通过转换运算符的类型捕获异常吗?

我不知道如何在简短的主题行中很好地表达这个问题,所以让我尝试更长的解释。假设我有这些异常类:

然后我可以这样做,并让它触发 catch 块吗?

我猜它不会,这很不幸,但我想我会问,因为我在网上或 SO 上找不到任何信息。是的,我意识到我可以在我的编译器中运行程序并看看会发生什么,但这并不能告诉我标准对这种行为的描述,只是我的编译器实现了什么(我不相信它)。

0 投票
5 回答
10327 浏览

c++ - C++ 中的 const 运算符重载问题

我在使用 const 版本重载 operator() 时遇到问题:

这给了我以下输出:

  • 调用了 NONconst-version - - 调用了 NONconst-version - A(1,1)=8.8
  • 调用了 NONconst-version - 错误:您只能更改矩阵的第一行。

如何实现 C++ 调用 operator() 的 const 版本?我正在使用 GCC 4.4.0。

0 投票
6 回答
255 浏览

c++ - Automatically converting an A* into a B*

Suppose I'm given a class A. I would like to wrap pointers to it into a small class B, some kind of smart pointer, with the constraint that a B* is automatically converted to an A* so that I don't need to rewrite the code that already uses A*.

I would therefore want to modify B so that the following compiles...

Note that B inheriting from A is not an option (instances of A are created in factories out of my control)...

Is it possible?

Thanks.

0 投票
2 回答
3047 浏览

c++ - 无效类型转换为“float”

我的课有问题。我要为我的班级制作比较运算符。
一些代码:

类声明:

问题是,我在 operator < 函数中有编译错误,在这一行:

部分正确:(浮动)其他

错误信息是:

问题的原因是什么?

0 投票
5 回答
48725 浏览

c++ - 什么是“运算符 int”函数?

下面的“operator int”函数是什么?它有什么作用?

0 投票
5 回答
7274 浏览

c++ - C++ 中的类型转换/铸造混淆

什么是类型转换,什么是类型转换

我应该什么时候使用它们中的每一个?

细节:对不起,如果这是一个明显的问题;我是 C++ 的新手,来自红宝石背景并且已经习惯了to_s等等to_i

0 投票
8 回答
128349 浏览

c++ - “运算符 bool() const”是什么意思

例如:

col是一个整数。如何operator bool() const工作?

0 投票
1 回答
96 浏览

c++ - 具有构造函数类型转换和转换运算符的转换序列

我读过标准转换可以在转换运算符或构造函数类型转换实现的转换之前或之后。另一方面,不允许两个转换运算符
的序列 不允许两个构造函数类型转换的序列

我开始对此进行测试并得到了不同的结果。我正在使用 MSVC2010

在第一束代码中,这失败了: int b1 = sMe; 这很棒,因为它暗示了两个转换运算符的序列:一个从 myString 到 myType,另一个从 myType 到 int

在第二组代码中,这不会失败: myString sYou(b); 虽然我相信它暗示了两个构造函数转换的序列:一个从 int 到 myType,另一个从 myType 到 myString。

有人可以向我解释我错过了什么吗?

非常感谢,

第一批

第二批

0 投票
6 回答
8612 浏览

c++ - 用于转换为函数指针的 C++ 转换运算符

我一直在努力反对一个在我脑海中足够简单的想法,但我不知道如何在 C++ 中实现。

通常,我可以使用转换运算符声明一个类,如下面的简单示例:

所以现在我可以写出很棒的东西了

但在我的特殊情况下,我想提供一个将对象转换为函数指针的运算符(例如,将Bar实例转换为int(*)(int, int)函数指针)。这是我最初尝试的:

但是操作符函数编译失败,产生了以下错误:

我也尝试了上面的简单变体,例如将返回类型括在括号中,但所有这些想法也都失败了。

有谁知道声明转换为函数指针运算符方法的语法是什么,或者是否有可能这样做?

注意:我使用 GCC 4.5.2 使用 Code::Blocks 编译它。也欢迎涉及一些新的 C++0x 概念的答案。

编辑

在我努力简化示例的过程中,我无意中遗漏了一个细节。这有点奇怪,但不是严格地返回一个int(*)(int,int)指针,转换运算符旨在模板化:

据我所知,我不再可以 typedef 这样的类型。这显然使事情变得更加笨拙,但我希望仍有办法。

0 投票
1 回答
1941 浏览

c++ - C++ 转换 const 传递引用

给定模板传递引用转换/类型转换运算符(没有 const)是可能的:

并给出以下代码(带 const):

产生这些错误:

错误:无法在赋值中将“TestA”转换为“int”
错误:无法在赋值中将“TestA”转换为“float”

问题

如何使转换/类型转换运算符返回模板类型的 const 传递引用?

语境

在大多数人进来并为“您无法将其转换为任何东西”而感到震惊之前,您将需要上下文。上面的代码是伪代码——我只对可能的 const 引用返回感兴趣,而不是模板化转换函数的缺陷。但如果你想知道它的用途,它相对简单:

TemplateClass -> Conversion(变成字节数据)-> File
TemplateClass <- Conversion(从字节数据变回)<- File

用户应该知道他们得到了什么,或者它应该是自动化的(IE 保存/加载状态)。是的,模板有一种通用方法,使用指针将任何类型转换为字节数据。

并且不要给我拍手称std已经在做这种事情了。转换过程是更复杂的类库设置的一部分。

我是一名程序员。相信我。C++ 信任我,让我犯错。只有这样我才会学习。