2012-07-03 72 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