草庐IT

any_cast

全部标签

c++ - 尝试使用 dynamic_cast 时出现 "source type is not polymorphic"

structA{};structB:A{};intmain(){A*a=newB();B*b=dynamic_cast(a);}给予:cannotdynamic_cast'a'(oftype'structA*')totype'structB*'(sourcetypeisnotpolymorphic)如何使A具有多态性?我想安全地将其转换到B。(一种方法是添加一个dummy虚函数,但有更好的方法吗?) 最佳答案 您需要使A具有多态性,可以通过添加virtual析构函数或任何虚函数来实现:structA{virtual~A()=defa

c++ - 为什么这个 reinterpret_cast 不编译?

我知道reinterpret_cast是危险的,我这样做只是为了测试它。我有以下代码:intx=0;doubley=reinterpret_cast(x);当我尝试编译程序时,它给了我一个错误提示invalidcastfromtype'float'totype'double发生了什么事?我认为reinterpret_cast是你可以用来将苹果转换为潜艇的流氓Actor,为什么这个简单的Actor不能编译? 最佳答案 在C++中,reinterpret_cast只能执行一组特定的转换,在语言规范中明确列出。简而言之,reinterpr

javascript - cast_sender.js 错误:无法加载资源:Chrome 中的 net::ERR_FAILED

我最近开始收到以下控制台错误,但没有进行任何代码更改。我最近没有安装任何扩展。Failedtoloadresource:net::ERR_FAILEDchrome-extension://enhhojjnijigcajfphajepfemndkmdlo/cast_sender.jsFailedtoloadresource:net::ERR_FAILEDchrome-extension://hfaagokkkhdbgiakmmlclaapfelnkoah/cast_sender.jsFailedtoloadresource:net::ERR_FAILEDchrome-extension:

casting - 具体结构上的类型转换与类型断言?

我是golang的新手,如果这个问题太天真,请道歉。环顾四周,但找不到我的基本问题的答案。假设我有一个具体的结构和方法,如下所示。typeMyDatastruct{field1stringfield2int}func(aMyData)OperatorOnString()string{returna.field1.(string)}func(aMyData)OperatorOnInt()int{returna.field2.(int)}我的问题是,我可以键入cast并返回而不是执行断言吗?从我目前了解到的情况来看,断言用于接口(interface)类型的数据。但在这种情况下,我有具体的类

arrays - golang : convert uint32 (or any built-in type) to []byte (to be written in a file)

我正在尝试使用unsafe库在Go中将uint32转换为字节数组(4个字节):h:=(uint32)(((fh.year*100+fh.month)*100+fh.day)*100+fh.h)a:=make([]byte,unsafe.Sizeof(h))copy(a,*(*[]byte)(unsafe.Pointer(&h)))前两行是正确的,但随后在copy调用时出现运行时错误(unexpectedfaultaddress)。下一步是调用Write_,err=fi.Write(a)将4个字节写入文件。我发现了具有类似主题的其他问题,但没有一个具有有效代码的问题。我也知道unsafe

casting - 在 Go 中从 float32 转换为 int

我尝试了几种将float转换为int的方法,我想要的是截断float,所以我只得到整数部分。我正在使用x:=float32(3.1)y,_:=strconv.Atoi((strconv.Ftoa32(x,'f',0)))//ybecomes3但如果x为3.9,y将变为4,因为此函数将舍入float32而不是截断。有没有一种截断而不是舍入的方法?如果是这样,是否可以在不涉及字符串的情况下做到这一点?(就像在C中将float转换为int一样) 最佳答案 只需使用int():x:=float32(3.1)fmt.Println(int(x

casting - 类型断言/类型切换是否性能不佳/在 Go 中很慢?

在Go中使用类型断言/类型切换作为运行时类型发现的方法有多慢?我听说例如在C/C++中,在运行时发现类型的性能很差。为了绕过这一点,您通常将类型成员添加到类中,这样您就可以与这些成员进行比较而不是强制转换。我在整个www中都没有找到明确的答案。这是我要问的一个示例-与其他类型检查方法(如上面提到的或我不知道的其他方法)相比,这是否被认为快速?funcquestion(anythinginterface{}){switchv:=anything.(type){casestring:fmt.Println(v)caseint32,int64:fmt.Println(v)caseSomeCu

casting - 在 Go 中对多个返回值进行转换/类型断言的惯用方法

在Go中转换多个返回值的惯用方式是什么?您可以在一行中完成,还是需要使用临时变量,例如我在下面的示例中所做的?packagemainimport"fmt"funconeRet()interface{}{return"Hello"}functwoRet()(interface{},error){return"Hejsan",nil}funcmain(){//Withonereturnvalue,youcansimplydothisstr1:=oneRet().(string)fmt.Println("String1:"+str1)//Itisnotaseasywithtworeturnv

Java Class.cast() 与强制转换运算符

在我的C++时代,我被教导C风格转换运算符的弊端,起初我很高兴发现在Java5中java.lang.Class获得了cast方法。我认为我们终于有了一种面向对象的方式来处理强制转换。原来Class.cast与C++中的static_cast不同。它更像是reinterpret_cast。它不会在预期的地方产生编译错误,而是会推迟到运行时。这是一个简单的测试用例来演示不同的行为。packagetest;importstaticorg.junit.Assert.assertTrue;importorg.junit.Test;publicclassTestCast{staticfinalcl

Java 泛型 : Cannot cast List<SubClass> to List<SuperClass>?

这个问题在这里已经有了答案:IsListasubclassofList?WhyareJavagenericsnotimplicitlypolymorphic?(19个回答)关闭6年前.刚刚遇到这个问题:Lista1=newArrayList();Listb1=a1;//compileerror:incompatibletypeDataNode类型是Tree的子类型。publicclassDataNodeimplementsTree令我惊讶的是,这适用于数组:DataNode[]a2=newDataNode[0];Tree[]b2=a2;//thisisokay这有点奇怪。任何人都可以对