Страница 1 из 1

Простой вопрос о VARIANT

Добавлено: 29 окт 2005, 20:30
vg
Во всех статьях Microsoft строго наказано, да и просто в форумах, практически все используют ::VariantInit для любых типов данных, инкапсулируемых в VARIANT.
Но вот вопрос ... почему бы не обойтись в простых случаях без этого вызова, когда передаются _простые_ данные, например, типа long, int и т.д?

Например, у COM интерфейса есть некий метод get_Item ( VARIANT index /* long */, ... ).

Почему бы не поставить // коментарий в коде:

Код: Выделить всё

for ( int i = 0; i < cItems; i ++ )
{
	VARIANT		varIndex;
	//::VariantInit( &varIndex );
			
	varIndex.vt	= VT_I4;
	varIndex.lVal	= long ( i );

	HRESULT hr =pISomeInterface->get_Item( varIndex, &Ifld ) ;

	<skip>
}
Спаисбо.

Добавлено: 30 окт 2005, 22:18
ura
[trn]Da mozhno, prochemu net. Ili pol'zuisya [/trn] CComVariant

Добавлено: 31 окт 2005, 11:13
vg
ura писал(а):[trn]Da mozhno, prochemu net. Ili pol'zuisya [/trn] CComVariant
Согласен. Тем более, что в вызове типа get_Item (CComVariant( 0L ) , ... ) не будет происходить вызова ::VariantInit. Зовётся только в дефолтовом конструкторе. Сам MS не использует ::VariantInit в аналогичных случаях... Отсюда и вопрос.