首页 > TAG信息列表 > downcast
rust downcast
downcast-rs = "1.2" // Can call macro via namespace since rust 1.30. use downcast_rs::Downcast; use std::fmt::Debug; // To create a trait with downcasting methods, extend `Downcast` or `DowncastSync` // and run `impl_downcast!()` on the trait.java中downcast向下转型到底有什么用
What is the point of downcast? 当一个方法只有子类才有,马克-to-win:不是说基类和子类都有,开始时又是基类指针指向派生类,这时就需要downcast, see the following example. after you cast with SubClass,sc is pure SubClass type. 例1.9.1--- class SuperClassM_t_w { inDYNAMIC_DOWNCAST 和 dynamic_cast
DYNAMIC_DOWNCAST DYNAMIC_DOWNCAST 是MFC中的,字面意思是,“动态向下转型”,主要用于 父类指针 转换为 子类指针,安全,可以用返回是否为 NULL 判断;而用强制转换,不安全。必须是由MFC中的CObject派生,且支持了RTTI(运行时类型识别)例如:// 这个object参数,就是pointer(指针)#define DYNAMICJava中的强制降频
我想对一个对象进行强制性的下调,哪些内容不能被强制转换,并且想知道正确的方法是什么. 用例是我有一个被检查的规则列表,什么将生成失败的规则列表.失败的规则是规则的子类.但是像 FailedRule failedRule =(FailedRule)规则; 将失败,因为规则对象不是FailedRule的实例 为了python – Swig从Base *向下转换为Derived *
我有以下c类(简化),我使用SWIG向Python公开: struct Component { virtual void update(); } struct DerivedComponent : public Component { void update() { cout << "DerivedComponent::update()" << endl; } void speak() { cout << "DeC dynamic_cast – 多态需求和向下转换
在下面的代码中,在构造案例1中的obj时,我们也构造了一个派生类对象,但它的成员函数对于obj是不可访问的.因此,在向下转换(即,在情况2中)时,使用obj作为源,我们已经在其中导出了所构造的构造.为什么obj需要是多态的? 如果我把我与上面的描述混淆了,为什么在向上转换时obj不需要是多态c – 使用static_cast(或reinterpret_cast)进行无效向下转换的安全性,无需添加成员即可继承
我想知道标准对以下代码的安全性的说法: class A { int v; }; class B: public A { }; // no added data member A a; B& b = static_cast<B&>(a); 显然,a的运行时类型是A,而不是B,因此强制转换实际上并不是类型安全的.但是,由于没有添加任何成员而且没有任何内容是虚拟的,IMO的C避免向下转发
我需要解析源代码.我已经确定了3种不同类型的标记:符号(运算符,关键字),litterals(整数,字符串等)和标识符. 我已经有了以下设计,其中有一个跟踪子类类型的基类,因此可以使用基类指针对其进行下载: class Token { type_e type; // E_SYMBOL, E_LITTERAL, E_TOKEN }; class Symbc – 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) {java – 多态性和向下转换问题
我正在读一本关于Java的书,目前关于多态性主题,以及如何向下转换参考变量.但是,我很难理解向下转换的概念.下面是我正在关注的示例的uml. 对于BasePlusCommissionEmployee的所有对象,他们的基本工资增加10%.其他Employee子类是按照正常情况进行的. PayrollSystemTest包含运行应用程c – 这不是贬低?
如果我做 double d = 34.56; int i = (int)d; 我不是“沮丧”吗? 要么 这个术语只用于类和对象吗? 我很困惑,因为在这种情况下,我们从一个较大的双向“向下转换”到一个较小的int,但是在类的情况下,我们从一个较小的基类“向下转换”到一个更大的派生类. 在某种意义上,这两种惯例是java – 编译时和运行时的Downcasting / Upcasting错误?
请检查以下程序. 我怀疑编译器何时会在编译器级别发出转换异常以及什么时候它将在运行时? 喜欢下面的程序,表达 我假设(Redwood)新的Tree()应该在编译时失败,因为Tree不是Redwood.但它在编译时没有失败,正如预期的那样在运行时失败! public class Redwood extends Tree { public# – 将类型转换(向下转换)为另一个子类型时的运行时错误
在我创建的许多其他类型中,可以使用downCast类型 我通常也创建一个扩展方法,因此它更容易管理… BaseTypeM BTDerV : BaseTypeM BTDerLastDescndnt : BTDerV 现在我创建一个LastDerived类型并将其值分配给ParentType BTDerV BTDer; BTDerLastDescndnt BTDerLastDesc = new BTDejava – 为什么在下载时不会在编译时抛出classcastException?
考虑下面的例子. main(注释)的第5行在运行时抛出ClassCastException.第4行是一个有效的演员,因为v1具有汽车的“知识”.同样,不应该第5行给出编译时错误,因为它有“知识v2”是车辆而不是汽车因此抛出编译时错误说“嘿,我不知道汽车,我是车辆,你不能被投入汽车”. 在编译期间,Vehiclc# – 如何强制转向泛型
鉴于以下代码: class Animal { } class Dog : Animal { } class Cage<T> { private T animal; public Cage(T animal) { this.animal = animal; } public T Animal { get { return animal;} } } class Program { sta