2012-07-03 43 views
1

我正在研究C++ ATL/COM中的数据访问。 如何在接口中传递可空类型(例如可为空的整数)?ATL COM中的可为空类型

+0

似乎我们需要使用variant_t(http://stackoverflow.com/questions/1987261/c-sharp-good-way-to-expose-nullablet-to-com?rq=1)...在其他词我的实体将充满变体......这可能是一个痛苦。有更好的解决方案吗? – Telemat

回答

0

在ATL/C++中的接口(IDL)中,在语言结构中没有可为空的类和支持(在C#中为<type>?)。可为空的基本上是类型本身,并且额外的BOOL表示我们目前是否有NULL

可以实现一个相对简单的模板类来查找 - 扩展可能 - 类似于C#Nullable。在界面上,这可以是两个参数,或者如您发现的那样,您可以使用VARIANT类型,因为它已经嵌入了有效负载值和.vt成员指示类型。 VT_NULL常量是它为自己所说的 - 整个变体的值为null。

+0

我正在访问组件内的数据库,因此我相信使用变体可能是最好的选择(因为ADO本身使用它)。 – Telemat