C++Builder强转类型问题

来源:百度知道 编辑:UC知道 时间:2024/09/22 00:58:35
我在界面上放置了多个TListView控件,现在想用一个PopupMenu1给这几个TListView共用,在使用时必须区分此时PopupMenu1是从哪个TListView中触发的。这里,我使用了:
TListView *ListView = (TListView*)(PopupMenu1->PopupComponent->Name);

但是语法编译不通过,请问我错在哪里,谢谢!
问题解决了,分享下:
TListView *ListView = (TListView*)(PopupMenuEx->PopupComponent);//得到列表指针

dynamic_cast
强制转换 如果类型转换不过来那么系统还是不进行转换操作。
运算符语法格式:
dynamic_cast<T>(ptr)
T 应定时一个指针、void*、或是一精定义过的类型,
ptr 必须是一个指针(pointer)或是一个参考(reference)
如果T的类型是void*,那么ptr则是一个可以存取最底层类型里的任何成员。
一般当你无法得知某个指针或是参考的真正类型。而又想这个未知的指针或是参考转成某个指定的类型时,你就可以用dynamic_cast 运算符。因为dynamic_cast运算符具有安全保护的机制,不至于在程序执行中,因为类型转换失败而导致系统关机。
注:如果dynamic_cast运算符无法正确转换成功那么它会返回一个值是0的指针。若是参数T是个参考类型,转换如果失败时,系统将会丢出一个例外错误处理信息:Bad_cast.