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

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

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

Сообщение 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>
}
Спаисбо.
ura
Житель
Сообщения: 915
Зарегистрирован: 09 мар 2003, 22:46

Сообщение ura »

[trn]Da mozhno, prochemu net. Ili pol'zuisya [/trn] CComVariant
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

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