[英]Translate UniGui Delphi code to C++Builder
如何将此代码翻译成 C++? UniGui 组件。
var
FrmList : TList;
I : Integer;
Frm : TUniBaseForm;
begin
FrmList := UniSession.FormsList;
UniListBox1.Clear;
for I := 0 to FrmList.Count - 1 do
begin
Frm := FrmList[I];
UniListBox1.Items.Add(Frm.Name + ' ' + Frm.ClassName );
end;
我对Frm:= FrmList[i];
有疑问 . 我努力了:
frm = UniSession->FormsList->Items[i];
E2034 无法将 'void *' 转换为 'TUniBaseForm *'
frm = dynamic_cast<TUniBaseForm*>(UniSession->FormsList->Items[i]);
E2307 类型 'void' 不是具有虚拟功能的已定义 class
frm = dynamic_cast<TUniBaseForm*>(UniSession->FormsList[i]);
E2031 无法从“TList”转换为“TUniBaseForm *”
Delphi 允许将一个无类型指针(C++ 中的void*
)分配给另一个没有类型转换的类型指针。 C++ 没有,您需要显式转换。
您在第二次尝试时走在了正确的轨道上,但您需要使用static_cast
或reinterpret_cast
,而不是dynamic_cast
,例如:
TUniBaseForm *Frm = static_cast<TUniBaseForm*>(FrmList->Items[i]);
或者
TUniBaseForm *Frm = reinterpret_cast<TUniBaseForm*>(FrmList->Items[i]);
请参阅以下相关问题:
在将 void* 转换为任何内容时,我应该使用 static_cast 还是 reinterpret_cast
什么时候应该使用 static_cast、dynamic_cast、const_cast 和 reinterpret_cast?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.