Я работаю над доступом к данным в C ++ ATL / COM. Как передать в интерфейс тип, допускающий значение NULL (например, целое число, допускающее значение NULL) ???
Обнуляемый тип в ATL COM
comment
Похоже, нам нужно использовать variant_t (stackoverflow.com/questions/1987261/) ... Другими словами, моя сущность будет полна вариантов ... что может быть неприятно. Есть ли лучшее решение?
- person Telemat   schedule 03.07.2012
Ответы (1)
В ATL / C ++ в интерфейсах (IDL) у вас нет классов, допускающих значение NULL, и поддержки языковых конструкций (<type>?
в C #). Nullable - это, по сути, сам тип и дополнительный BOOL
, указывающий, есть ли у нас в настоящее время NULL
или нет.
Можно реализовать относительно простой шаблонный класс для просмотра - с целью расширения - аналогично C # Nullable. В интерфейсе это будут либо два аргумента, либо, как вы обнаружили, вы можете использовать тип VARIANT
, поскольку он уже включает значение полезной нагрузки и член .vt
, указывающий тип. VT_NULL
константа - это то, что он говорит для itslef - значение всего варианта равно нулю.
person
Roman R.
schedule
06.07.2012
Я обращаюсь к базе данных в компоненте, и поэтому я считаю, что использование варианта, вероятно, является лучшим вариантом (поскольку сам ADO использует его).
- person Telemat; 03.08.2012