首页 > TAG信息列表 > dynamic-cast
c-动态类型转换抛出的指针不是std :: __ non_rtti_object
我在使用dynamic_cast时遇到问题.我只是编译了我的项目并在调试模式下测试了所有内容,然后尝试在发布模式下对其进行了编译,我已经从调试模式的优化参数(现在为/ o2)复制了每个配置,(调试时将其设置为/ od)项目已编译,但是当它开始加载我的资源时,我在这里的代码段中遇到了异常: foc-安全检查变量的类型
对于系统,我需要将指针转换为long类型,然后再将long类型转换为指针类型.如您所料,这是非常不安全的.我想做的是使用dynamic_cast进行转换,因此,如果我将它们混合在一起,将会得到一个空指针.本页显示http://publib.boulder.ibm.com/infocenter/lnxpcomp/v7v91/index.jsp?topic=/com.c – 为什么dynamic_cast是邪恶的?在这种情况下我应该使用dynamic_cast吗?
有人说the use of dynamic_cast often means bad design and dynamic_cast can be replaced by virtual functions >为什么使用dynamic_cast认为设计不好? >假设我有函数名func(Animal * animal,int animalType),func中的实现如下: bool func(Animal* animal, int animalType) { .c – 不能dynamic_cast void *到模板化的类
我得到的确切错误是: 不能dynamic_cast’对象'(类型为’void *’)来键入’class udDator(int)*’ (source不是指向类的指针) 这发生在重写的运算符delete中.我正在尝试创建一个模板化的内存管理类,它可以继承到任何其他类,通过引用管理内存.这将取代类似智能shared_ptr的东西,试图使C dynamic_cast – 多态需求和向下转换
在下面的代码中,在构造案例1中的obj时,我们也构造了一个派生类对象,但它的成员函数对于obj是不可访问的.因此,在向下转换(即,在情况2中)时,使用obj作为源,我们已经在其中导出了所构造的构造.为什么obj需要是多态的? 如果我把我与上面的描述混淆了,为什么在向上转换时obj不需要是多态c – 为什么我不能在多重继承期间“侧向”动态广播?
以下代码抛出std :: bad_cast struct Foo { void foo () {} }; struct Bar { Bar () { dynamic_cast <Foo &> (*this) .foo (); } virtual ~ Bar () {} }; struct Baz : public Foo, public Bar { }; int main () { Baz b; } 我记得曾经读过dync – dynamic_cast“this”到派生类型:什么时候合法?
这是一个显然不起作用的代码,因为在构造函数中向下转换“this”是非法的: #include <cassert> class A { protected: virtual ~A() {} public: A(); }; class B : public A { }; A::A() { assert(dynamic_cast<B*>(this)); } int main(void) {c – 如何从std :: exception动态广播到std :: nested_exception?
我刚刚看到一个包含从std :: exception到std :: nested_exception的dynamic_cast的代码,例如, try { std::throw_with_nested(std::runtime_error("error")); } catch (std::exception &e) { auto &nested = dynamic_cast<std::nested_exception&>(e);c – 同一类型的Dynamic_cast对象
参见英文答案 > How is the deletion of a pointer detected using dynamic cast 1个 我正在研究一些遗留代码,它们有这样的几行: try { object = dynamic_cast< Object* >( _object ); } _object已c – 堆栈对象的动态转换失败
前几天我遇到了一个实例,我有一个函数,它指向一个基类型,然后我需要向上转换为派生类型以访问一些额外的功能.但是,dynamic_cast失败了,这很奇怪,因为我的类型肯定继承了基类型. 为了了解正在发生的事情的底部,我创建了以下测试程序,我认为复制了我所看到的: void cast(TestClass *c – 重构建议:如何避免在此OO设计中进行类型检查
我正在寻找有关重构的建议,以改善我的课程设计并避免类型检查. 我正在使用Command设计模式来构建菜单树.菜单中的项目可以是各种类型(例如,立即动作[如“保存”],切换开/关属性,其根据其状态[如“斜体”]等显示带有检查/图标等).至关重要的是,还有子菜单,它取代(而不是显示在屏幕上c – 从父母到孩子的什么类型的演员?
这个问题是关于应该使用哪个C++ style cast进行此转换.我知道C风格的演员可以达到这个目的. 对于以下类结构: class Foo {}; class Bar : public Foo {}; 说我得到了:Foo * ptr;我想把它投到一个Bar *我应该使用哪种类型的演员?好像我必须使用dynamic_cast: Used for conversion o在Android NDK中使用“dynamic_cast”时会出现“UnsatisfiedLinkError”
我是Android的新手,我遇到了下一个问题: 当我使用使用“dynamic_cast”表达式的C代码时 – 当我在模拟器上启动应用程序时出现“UnsatisfiedLinkError”.但是当我没有它运行应用程序时 – 一切正常(我的意思是没有任何错误到LogCat) 我试图在Android 2.3.3上运行它.我用的是android-