downcast相关内容
我有两个班级: /*Switch.h*/类 CSwitch:公共 CDeviceEntity {}/*EndSystem.h*/CEndSystem 类:公共 CDeviceEntity {} 但是当我使用时: CDeviceEntity* dev = NULL;dev = topo->headList[i]->node;如果(DYNAMIC_DOWNCAST(CEndSystem,开发)!
..
我的基类如下: class point//具体类{... //执行}class subpoint : public point//具体类{... //执行} 如何从点对象转换为子点对象?我已经尝试了以下所有三个: point a;subpoint* b = dynamic_cast(&a);子点* b = (子点*)a;子点 b = (子点)a; 这些演员表有什么问题? 解
..
我有三个班级: class A {};B 类:虚拟公共 A {};C 类:虚拟公共 A {};D类:公共B,公共C{}; 尝试从 A* 静态转换到 B* 我收到以下错误: 不能通过虚基A从基A转换为派生类型B 解决方案 为了理解强制转换系统,您需要深入研究对象模型. 简单层次模型的经典表示是包含:如果 B 派生自 A 那么 B 对象实际上将包含一个 A 子对象以及它自己的属性.
..
我在 http://www.javabeginner.com/learn-java/上遇到过这个例子java-object-typecasting 在它谈到显式类型转换的部分中有一个例子让我感到困惑. 例子: class Vehicle {字符串名称;车辆() {name = "车辆";}}类重型车辆扩展车辆 {重型车辆(){name = "重型车辆";}}类卡车扩展重型车辆{卡车() {
..
是否可以在 C# 中使用显式类型转换将基类对象分配给派生类引用? 我已经试过了,但它产生了一个运行时错误. 解决方案 没有.对派生类的引用必须实际引用派生类的实例(或 null).否则你会如何期望它的行为? 例如: object o = new object();字符串 s = (字符串) o;int i = s.Length;//这可以明智地做什么? 如果您希望能够将基类
..
是否可以在 C# 中将基类对象显式转换为其派生类之一?目前认为我必须为我的派生类创建一个构造函数,它接受一个基类对象作为参数并复制属性值.我不太喜欢这个主意,所以我想尽可能避免它. 这似乎不应该工作(对象被实例化为新基,因此不应为派生类的额外成员分配内存)但 C# 似乎允许我这样做: class BaseClass{……一些东西……}类派生类:基类{public bool MyDerive
..
我有一个类,可能需要将对象更改为后续的后代类.这可能吗?我知道一种选择是返回它的副本,但使用子类代替,但实际修改当前对象会很好......所以: class myClass {受保护的 $var;函数 myMethod(){//改变这个对象的类的函数重铸(myChildClass);}}class myChildClass 扩展 myClass {}$obj = new myClass();$o
..
我是 C#(和 OOP)的新手.当我有如下代码时: class Employee{//一些代码}班主任:员工{//一些代码} 问题 1:如果我有其他代码可以做到这一点: Manager mgr = new Manager();雇员 emp = (雇员)mgr; 这里的 Employee 是一个 Manager,但是当我把它像这样转换成一个 Employee 时,这意味着我在向上转换它吗?
..
我正在尝试在 Rust 中操作 AST.会有很多操作,我希望我的树是不可变的,所以为了节省时间,所有引用都将是 Rcs. 我的树节点将如下所示: enum 条件 {等于(Rc表达式,Rc表达式),小于(Rc表达式,Rc表达式),...}枚举表达式{加(Rc表达,Rc表达),...} 我想用另一个相同类型的节点替换给定类型的随机节点.为了对树进行通用操作,我做了一个特征: trait A
..
就类变量而言,向上转型和向下转型有什么区别? 例如在下面的程序类中Animal只包含一个方法而Dog类包含两个方法,那么我们如何将Dog变量转换为Animal变量. 如果转换完成,那么我们如何使用Animal的变量调用Dog的另一个方法. 类动物{public void callme(){System.out.println("在动物的呼唤中");}}类狗扩展动物{public vo
..
protocol P : class {var 值:Int {get}}X级:P{无功值 = 0初始化(_ 值:Int){self.value = 价值}}var ps:[P] = [X(1), X(2)]对于 p 中的 ps {如果让 x = p 作为?X {//适用于单个变量...}}如果让 xs = ps 作为?[X] {//不适用于数组 (EXC_BAD_ACCESS)...} 如果 P
..
我有以下 C++ 类(简化),我使用 SWIG 将它们暴露给 Python: struct 组件{虚空更新();}struct DerivedComponent : 公共组件{void update() { cout
..
pub struct WidgetWrap {//...小部件:RefCell>,} 有时我想将 Box 转换为 Box let mut cell = widget.borrow_mut();让 w = cell.downcast_mut::>(); 这给了我这样的错误: 错误:实例化一个类型参数不兼容的类型`Box`,不满足 `'static` [E0144]
..
我试图查看HashSet是否将是我下一个项目的解决方案,所以我正在做一些非常简单的测试来检查功能.我有一个简单的类 Klant : 公共类Klant {private int klantNummer;公共Klant(int nummer){this.klantNummer = nummer;}public int getKlantNummer(){返回this.klantNummer;}}
..
我有以下结构: #[derive(Debug)]pub struct条目{pub索引:usize,客栈名称:字符串,pub filename_offset:u64,pub entry_type:EntryType,}#[派生(调试)]pub枚举EntryType {文件 {file_offset:u64,长度:usize,},目录 {parent_index:使用,next_index:使用,}
..
我知道已经发布了与同一主题相关的一些问题,但是我看到了不同的答案,因此我对哪个答案正确感到非常困惑. 在下面的链接上,人们提到无法向下转换 将基础类型转换/转换为派生类型 在下面的链接上,人们提到仅当派生类是基类的实例时,才可能进行向下转换 向下和向上 我做了一个小实验,并使用直接强制转换在小型项目(C#)上实现了向下转换,例如:DerivedClass dc =(Derived
..
如何向下转换对象列表,以便将列表中的每个对象向下转换为派生类的对象? 这是场景. 我有一个带有List基本项目的基类,并且有两个继承自它的类: public class BaseClass { public List items; protected BaseClass() { // some code to build
..
想象一下,我有一个列表,其中包含50种不同类型的Node的某些子类,我希望它们是同一类型,否则将得到ClassException.我有一个接收此列表的方法,以及一个持有并占有某种类型的节点的方法 我想做这样的事情: public receive(List list, Node node){ for (
..
假设我有一些对象的集合,这些对象都从基类继承。像... 抽象公共类动物 { } 公共类狗:动物 { } 类猴子:动物 { }现在,我们需要喂养这些动物,但不允许他们知道如何喂养自己。如果可以,答案将很简单: foreach(myAnimals中的Animal a) { a.feed(); } 但是,他们不知道如何养活自己,所以我
..
是否可以在C#中使用显式类型转换将基类对象分配给派生类引用?。 我已经尝试过并创建运行-时间错误。 解决方案 否。对派生类的引用实际上必须引用派生类的实例(或null)。否则,您会期望它如何表现? 例如: object o =新的object(); string s =(string)o; int i = s.Length; //这可以明智地做些什么?
..