将UniGui Delphi代码翻译成C++;建设者 如何将此代码翻译成C++?UniGui组件 v应收账 FrmList:TList; I:整数; Frm:TUniBaseForm; 开始 FrmList:=UniSession.FormsList; UniListBox1.清晰; 对于I:=0到FrmList.Count-1 do 开始 Frm:=FrmList[I]; UniListBox1.Items.Add(Frm.Name+“”+Frm.ClassName); 结束;
我对将UniGui Delphi代码翻译成C++;建设者 如何将此代码翻译成C++?UniGui组件 v应收账 FrmList:TList; I:整数; Frm:TUniBaseForm; 开始 FrmList:=UniSession.FormsList; UniListBox1.清晰; 对于I:=0到FrmList.Count-1 do 开始 Frm:=FrmList[I]; UniListBox1.Items.Add(Frm.Name+“”+Frm.ClassName); 结束;,c++,delphi,types,c++builder,C++,Delphi,Types,C++builder,我对Frm:=FrmList[I]有问题。我试过: frm=UniSession->FormsList->Items[i] E2034无法将“void*”转换为“TUniBaseForm*” frm=dynamic_cast(UniSession->FormsList->Items[i]) E2307类型“void”不是具有虚拟函数的已定义类 frm=dynamic_cast(UniSession->FormsList[i]) E2031无法从“TList”强制转换为“TUniBaseForm*
Frm:=FrmList[I]有问题代码>。我试过:
frm=UniSession->FormsList->Items[i]代码>
E2034无法将“void*”转换为“TUniBaseForm*”
frm=dynamic_cast(UniSession->FormsList->Items[i])代码>
E2307类型“void”不是具有虚拟函数的已定义类
frm=dynamic_cast(UniSession->FormsList[i])代码>
E2031无法从“TList”强制转换为“TUniBaseForm*”
Delphi允许将非类型指针(void*
在C++中)分配给另一个类型指针,而无需强制转换。C++没有,需要一个显式的cj.
您的第二次尝试是正确的,但是您需要使用静态\u cast
或重新解释\u cast
,而不是动态\u cast
,例如:
TUniBaseForm*Frm=static_cast(FrmList->Items[i]);
或
TUniBaseForm*Frm=reinterpret_cast(FrmList->Items[i]);
见以下相关问题:
(void*)frm=…
?或者C不允许数据类型左值?也,