首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >reinterpret_cast充当dynamic_cast

reinterpret_cast充当dynamic_cast
EN

Stack Overflow用户
提问于 2013-12-10 19:40:40
回答 2查看 484关注 0票数 2

我的代码是这样的:

代码语言:javascript
复制
void some_func(void *source)
{
    ...
    double *casted = reinterpret_cast<double *>(source);
    ...
}

这会导致std::__non_rtti_object异常。根据堆栈跟踪,它是从__RTDynamicCast中提出的,据我所知,这是dynamic_cast的MSVC实现。

这个异常应该发生在dynamic_cast中,因为指针来自外部库(可能没有/GR编译),并且指向带有几个双倍的结构。但我不认为reinterpret_cast会这样。难道它不应该改变指针的类型而不进行任何检查吗?

备注:

  • 我的编译器是msvc120 ( 2013)
  • 项目使用/GR (启用运行时类型信息)进行编译。
  • 指针"source“来自外部库(可能没有/GR而编译)
  • 我也用同样的结果尝试了static_cast
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-23 19:59:52

不可复制的。

啊,我试着用所有额外的库重建整个项目,问题就消失了。看起来很奇怪,因为我从来没有使用过dynamic_cast的代码,所以不知道是什么原因造成的。另外,我之前已经尝试过只重建这个项目(没有其他dll)。不管怎样,谢谢你的帮助。-- OP

票数 0
EN

Stack Overflow用户

发布于 2014-04-24 05:47:00

您似乎需要在makefile中重新检查dll的构建顺序(如果使用这种方式)。我猜来自您提到的外部库的源来自于构建树中的“更高”的外部库,而不是您的代码所在的库。试着看看你的makefile是否正常工作(可能漏掉了一些触发器)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20503708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档