问题标签 [static-cast]

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

c++ - C++ 无法通过虚拟基 A 从基 A 转换为派生类型 B

我有三个班级:

尝试从 A* 到 B* 的静态转换我收到以下错误:

0 投票
7 回答
3524 浏览

c++ - 将 Derived*const 转换为 Base*const

编辑 - 将问题更多地放在上下文中。

鉴于:

当我尝试实施

这没用。aconst_cast对我来说没有意义,因为我不想改变常量,而且我没有改变我所指的内容,那么为什么 g++ 会告诉我

? 如果我省略演员表,它会说

如果有人能对此有所了解,将不胜感激。

0 投票
2 回答
315 浏览

c++ - C++ sdi 应用程序中的 Static_cast 编译器错误

我有一个小型 SDI 应用程序,我正在尝试添加对菜单使用情况的跟踪,即。用户选择某些菜单项的次数。

一些菜单项由 View 组件 (DemoView.cpp) 处理,而其他菜单项由主应用程序 (DemoApp.cpp) 处理。Since the tracking structure is defined in the main app, I believe that I have to notify the View's parent with a special message when a menu item (handled by the View) is selected.

如果这是正确的,我的问题是我无法创建正确的 ON_MESSAGE 命令。它看起来像这样:

其中 OnIncreaseFreq() 定义如下:

但是我收到此错误:

我将不胜感激

0 投票
1 回答
29013 浏览

c++ - qobject_cast 是如何工作的?

我刚刚在 Qt 中找到了以下代码,我有点困惑这里发生了什么。

尤其是做什么reinterpret_cast<T>(0)

有人愿意解释吗?

0 投票
3 回答
3190 浏览

c++ - 在 C++ 中转换类型时出错

我有一个程序需要使用 Format(); 将字符串文字和 int 组合成 CString 变量的函数。我尝试了几种不同的方法,它们的代码在这里:

第一个返回错误 C2664: 'void ATL::CStringT::Format(const wchar_t *,...)' : cannot convert parameter 1 from 'const char [33]' to 'const wchar_t *'

第二个,没有错误,但文本显示为汉字。

第三个返回错误 C2440: 'static_cast' : cannot convert from 'const char [33]' to 'wchar_t'

将 CStrings 转换为 wchar_t *s 的任何想法?
谢谢

0 投票
2 回答
139 浏览

c++ - 关于类型转换的初学者问题

我打算在我的随机数生成器中对我的数字使用 math.h。看来我只能在双打上使用 math.h 函数。所以:

我试图给“value”一个“currentValue”的值,或者至少是要转移的数字值的一部分。我正在使用随机数生成器,所以我不在乎是否转移了整个数字。我只需要它的一部分工作。

我在某个时候:

** 通过代码未显示它们的值被设置。**

后来,我需要一部分价值去currentValue。

我试过了:

任何帮助,将不胜感激。

谢谢您的帮助。问题已经解决了。

0 投票
1 回答
801 浏览

c++ - static_cast 被滥用了吗?

我对 的感觉很复杂static_cast,因为它是可用的最安全的 C++ 转换,但同时允许安全和不安全的转换,所以你必须知道上下文来说明它是否真的安全或可能导致 UB(例如,在转换时到一个子类)。

那么为什么没有更安全的显式转换呢?这是一个示例,它可能有用。在 COM 中,它们必须将接口指针返回为void** ppv,因此“必须”显式转换

然后建议将其替换为更安全的 C++ 演员表

static_cast但是,即使在这里也有意义吗?this是一个派生自 的类IInterface,因此可以简单地写

或使用像

那么,static_cast有时会被误用并且可以(应该?)在某些情况下被这个取代implicit_cast,还是我错过了什么?

编辑:我知道在 COM 中需要强制转换,但不一定是static_cast,隐式强制转换就足够了。

0 投票
7 回答
7622 浏览

c++ - 当两个链接的 static_cast 可以完成它的工作时,为什么我们在 C++ 中有 reinterpret_cast?

假设我想投到A*char*反之亦然,我们有两个选择(我的意思是,我们中的许多人认为我们有两个选择,因为两者似乎都有效!因此混乱!):

两者都工作正常。

即使这样也能正常工作!

那么为什么我们reinterpret_cast在 C++ 中有两个链式 static_cast可以完成它的工作呢?

你们中的一些人可能会认为这个主题与之前的主题重复,例如本文底部列出的主题,但事实并非如此。这些主题仅在理论上进行讨论,但没有一个给出一个例子来说明为什么reintepret_cast真的需要,而且两个 static_cast肯定失败。我同意,一个 static_cast 会失败。但是两个呢?

如果两个链式的语法static_cast看起来很繁琐,那么我们可以编写一个函数模板,使其对程序员更友好:

然后我们可以使用它,如:

另外,请参阅这种any_cast可能有用的情况:Proper cast for fstream read and write member functions

所以我的问题基本上是,

  • 为什么我们有reinterpret_castC++?
  • 请给我看一个例子,两个链式 static_cast肯定不能做同样的工作?

0 投票
2 回答
1342 浏览

c++ - reinterpret_cast 用于几乎 pod 数据(布局兼容性是否足够)

我正在尝试了解static_castreinterpret_cast

如果我是正确的,标准(9.2.18)说reinterpret_cast对于 pod 数据是安全的:

一个指向 POD 结构对象的指针,使用 a 进行适当转换 reinterpret_cast,指向它的初始成员(或者如果该成员是位字段,则指向它所在的单元),反之亦然。[注意:因此,在 POD 结构对象中可能存在未命名的填充,但不是在其开头,这是实现适当对齐所必需的。——尾注]

我的问题是如何严格解释这一点。例如,布局兼容性是否足够?如果没有,为什么不呢?

对我来说,以下示例显示了一个示例,其中严格的“仅 POD 有效”解释似乎是错误的。

complex_base::m_data此外,如果受到保护(这意味着complex_base不是 pod),可能会破坏什么?[编辑:以及如何保护自己/检测此类破损]

在我看来,布局兼容性应该足够了——但这似乎不是标准所说的。

编辑:感谢您的回答。他们还帮我找到了这个, http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm

0 投票
5 回答
956 浏览

c++ - 模板化赋值运算符问题

我想确保 *this != &rhs 在赋值运算符中。但它不会编译。有什么建议么?