主页C++ Builder 资料C++ Builder 参考手册VCL 基础类TObject
C++ Builder 串口控件
C++ Builder 编程技巧
C++ Builder 操作指南
C++ Builder 参考手册
基础知识
cfloat 浮点数
cmath 数学函数
cstdlib 标准库函数
System 字符串
System 日期和时间
System.Math.hpp 数学函数
其他数据类型
VCL 基础类
 • TObject
   · 方法
   · TObject
   · ~TObject
   · Free
   · DisposeOf
   · InitInstance
   · NewInstance
   · InstanceSize
   · FreeInstance
   · CleanupInstance
   · ClassType
   · ClassName
   · ClassNameIs
   · QualifiedClassName
   · UnitName
   · UnitScope
   · ClassParent
   · ClassInfo
   · InheritsFrom
   · MethodAddress
   · MethodName
   · FieldAddress
   · GetInterface
   · GetInterfaceEntry
   · GetInterfaceTable
   · Equals
   · GetHashCode
   · ToString
   · SafeCallException
   · AfterConstruction
   · BeforeDestruction
   · Dispatch
   · DefaultHandler
 • TPersistent
 • TInterfacedPersistent
 • TComponent
 • TControl
 • TGraphicControl
 • TGraphicsObject
VCL 应用程序
Pictures 图片
Graphics 绘图
Additional 控件
System 控件
A ~ Z 字母顺序排列的目录
网友留言/技术支持
TObject::GetInterface - 获取指定的接口

TObject::GetInterface:获取指定的接口

函数原型:

bool __fastcall GetInterface(const GUID &IID, /* out */ void *Obj);
template <typename T>
bool __fastcall GetInterface(DelphiInterface<T> &smartIntf)
{
  return GetInterface(__uuidof(T), reinterpret_cast<void*>(static_cast<T**>(&smartIntf)));
}

头文件:

#include <System.hpp>

命名空间:

System

参数:

Delphi 的 IID 允许用接口名称,编译器会自动采用类型的 GUID。
C++ 可以用模板版本的 GetInterface,相当于 dynamic_cast,GetInterface 在转为不支持的类型的时候不会抛出异常,只是得到的指针为 NULL,请参考 TInterfacedPersistent 的 operator _di_IInterface()。
参数 Obj 虽然是 void * 类型的,但是实质上是 void ** 类型的,必须把 void ** 强制转为 void * 作为 Obj 参数。

返回值:

true: 成功,通过 Obj 参数返回接口;
false: 失败。

GetInterface 相当于 Delphi 里面的 as 和 C++ 里面的 dynamic_cast,但是不会抛出异常,如果指定的接口不支持。

兼容性:

函数 \ C++ Builder 编译器 bcc32 clang32 clang64
TObject::GetInterface

相关链接:

GetInterfaceEntryGetInterfaceTableTObjectVCL基础类

◤上一页:FieldAddress下一页:GetInterfaceEntry

C++ 爱好者 -- Victor Chen 的个人网站 www.cppfans.com 辽ICP备11016859号