casting相关内容
假设有这样的类层次结构: class A//基类B类//接口C类:公共A,公共B 然后创建C对象: A *object = new C(); 是否可以将对象强制转换为 B ? 重要提示:我假设我不知道对象是 C.我只知道它实现了接口 B 解决方案 否.这是不可能的(从 A* 直接转换到 B*). 因为A和B的地址在class C的不同位置.所以演员表总是不安全的,你可能
..
我相信在下面的代码中,C“自动将 17 转换为 int *",正如最近有人指出的(但没有给出原因),这是错误的. int *ptoi = 17;//我假设 17 被自动转换为 int * 我知道如果我在 C++ 中做与上面相同的事情,我会收到一个错误消息,说 invalid conversion from int to int *.但是,如果我在 C++ 中执行以下操作,则效果很好: int
..
我得到了以下枚举: 公共枚举 detallistaDocumentStatus {///原来的,///复制,///重新广场,///删除,} 然后我得到了一个 detallistaDocumentStatus 类型的类属性: public detallistaDocumentStatus documentStatus {得到 {返回 this.documentStatusField;}放
..
为什么我不能将 List 转换为 List?为什么以下不起作用: 内部类ObjBase{}内部类 Obj : ObjBase{}内部类 ObjManager{内部列表返回东西(){将 getSomeStuff() 作为 List 返回;}私人列表获取一些东西(){返回新列表();}} 相反,我必须这样做: 内部类ObjBase{}内部类 Obj : ObjBase{}内部类 ObjManag
..
可能的重复: TypeCasting 的性能 将一个对象转换为另一个对象的代价有多大? CustomClass instance = GenericObject as CustomClass 是否应该避免所有成本? 想看看其他人是怎么想的.我确定这是非常特殊的情况. 解决方案 您应该避免担心特定语言功能对性能的影响,除非您有具体的证据(测量)表明它们确实导致了问题. e
..
系统:Windows Vista 32 位,Java 6.0.2 我有几个关于将字符转换为整数的问题.我运行下面的代码,将 myInt 的值为 4: char myChar = '4';int myInt = myChar - '0'; 现在,这种转换是 Java 自动完成的吗?是从 ascii '4' 中减去 '0' 的 ascii 值,然后在幕后转换为 int 吗?这让我很困惑,因
..
可能的重复: 令人困惑的 Enumerable.Cast InvalidCastException 嗨, 我刚刚注意到 Enumerable.Cast 扩展方法有些奇怪……它似乎无法从 int 转换为 长,即使这个演员是完全合法的. 以下代码失败并出现 InvalidCastException : foreach (var item in Enumerable.Ran
..
如何将double 转换为decimal 用于货币开发.M 去哪儿了? decimal dtot = (decimal)(doubleTotal); 解决方案 你只将 M 用于数字文字,当你转换它时: decimal dtot = (decimal)doubleTotal; 请注意,浮点数不适合保持精确值,因此如果您先将数字相加,然后转换为 Decimal,则可能会出现舍入错误.您可能希
..
我多次看到并使用了C++,特别是在各种线程实现中.我想知道这样做是否有任何陷阱/问题?当我们强制转换为 void* 并再次返回时,有什么方法可能会遇到错误或未定义的条件吗?如果有这些问题,我们应该如何解决? 谢谢. 解决方案 我想知道这样做是否有任何陷阱/问题? 在将 void* 转换回特定类型时,您需要绝对确定,否则,您最终会遇到 未定义行为 和潜在的灾难.一旦你使用vo
..
我们经常听到/读到应该避免动态转换.我想知道根据你的说法,什么是它的“好用"示例? 编辑: 是的,我知道其他线程:它是确实在阅读我提出问题的第一个答案时! 解决方案 这个最近的主题给出了一个它可以派上用场的例子.有一个基本的 Shape 类和从它派生的类 Circle 和 Rectangle .在测试相等性时,很明显圆形不能等于矩形,尝试比较它们将是一场灾难.在遍历指向 Sha
..
可能的重复: C++ 等效的 instanceof 我想知道 dynamic_cast 和 typeid 之间的区别仅在于类比较(除了 dynamic_cast 允许访问子类的方法和 typeid 仅用于类比较).我发现一个两年前的 StackOverflow 也在问同样的问题:C++ 等效的 instanceof.然而,它已经两年了,我不想死掉一个旧帖子(我不确定 typeid 什么时候
..
扩展. 当我做这样的事情时,我觉得我很酷: bool hasParent(){返回 this->parentNode ;} 即使使用(bool)强制转换,警告仍然不会消失. 当没有父节点时,this->parentNode 为 NULL. 但我得到: 警告 C4800:“节点 *":强制将值设为布尔值“真"或“假"(性能警告) 怎么了,哟?为什么这是一个性能警告?
..
如何在不丢失编译器内部数据的情况下进行类型转换? 例如: int i = 10;UINT k = (UINT) k;浮动FL = 10.123;UINT ufl = (UINT) fl;//这里数据丢失?char *p = "Stackoverflow Rocks";unsigned char *up = (unsigned char *) p; 编译器如何处理这种类型转换?一个显示这
..
问题很简单.据我了解,GCC 认为在 32 位环境中,字符将按字节对齐,整数按 4 字节对齐.我也知道 C99 标准 6.3.2.3 说在未对齐的指针类型之间进行转换会导致未定义的操作.C 的其他标准对此有何看法?这里还有许多经验丰富的编码员 - 对此的任何看法将不胜感激. int *iptr1, *iptr2;字符 *cptr1, *cptr2;iptr1 = (int *)cptr1;cpt
..
我需要递归地将 PHP SimpleXMLObject 转换为数组.问题是每个子元素也是一个 PHP SimpleXMLElement. 这可能吗? 解决方案 json_decode(json_encode((array) simplexml_load_string($obj)), 1);
..
我正在连接一个事件以使用需要在触发后自行删除的 lambda.我无法通过将 lambda 内联到 += 事件(没有可用于删除事件的可访问变量)来做到这一点,所以我设置了一个 Action 变量并将 lambda 移到那里.主要错误是它无法将 Action 转换为 EventHandler.我认为 lambda 表达式可以隐式转换为事件处理程序,为什么这不起作用? 解决方案 Lambda 可
..
我正在尝试以下查询: SELECT (json_data->'position'->'lat') + 1.0 AS lat FROM 更新 LIMIT 5; (+1.0 只是为了强制转换为浮动.我的实际查询要复杂得多,这个查询只是问题的一个测试用例.) 我收到错误: 错误:运算符不存在:jsonb + numeric 如果我添加显式转换: SELECT (json_data->'p
..
当我将 char * 声明为固定字符串并重用指针指向另一个字符串时 /* 初始声明 */char *src = "abcdefghijklmnop";...../* 我收到“警告:赋值从指针生成整数而不进行强制转换" */*src="另一个字符串"; 我尝试重铸指针,但没有成功. 解决方案 写语句时 *src = "anotherstring"; 编译器将常量字符串 "abcdef
..
和 Boost 一样,C++11 提供了一些用于转换 shared_ptr 的函数: std::static_pointer_caststd::dynamic_pointer_caststd::const_pointer_cast 然而,我想知道为什么 unique_ptr 没有等效函数. 考虑以下简单示例: class A { virtual ~A();... }B 类:公共 A {
..
例如,当我将两个整数相除并希望返回一个浮点数时,我迷信地这样写: int a = 2, b = 3;浮动c =(浮动)a/(浮动)b; 如果我不将 a 和 b 转换为浮点数,它将进行整数除法并返回一个 int. 同样,如果我想将一个有符号的 8 位数字与一个无符号的 8 位数字相乘,我会在相乘之前将它们强制转换为有符号的 16 位数字,以免溢出: u8 a = 255;s8 b = -
..