Iwao Dev

気付いたことをメモしています.

この画面は、簡易表示です

2021/05/14

std::vector::data()

今まで VC 14 リリース版などでは通っていたコード.
VC 8 でビルドした exe で,配列の要素が空の時に終了してしまう.

	MapiMessage	message ;
	memset(&message,0,sizeof(message)) ;
	message.nFileCount	= ULONG(fileDescA.size()) ;
	message.lpFiles		= &fileDescA[0] ;
	message.nRecipCount	= ULONG(recipDescA.size()) ;
	message.lpRecips	= &recipDescA[0] ;

vector subscript out of range
&fileDescA[0] で vector の先頭を参照することがうまくないみたい.
次の様に data() を使える環境ならば良さそう.

	message.nFileCount	= ULONG(fileDescA.size()) ;
	message.lpFiles		= fileDescA.data() ;

使えない場合は,空でないことを確認する必要がある?

    if (fileDescA.size() > 0) {
	message.nFileCount	= ULONG(fileDescA.size()) ;
	message.lpFiles		= &fileDescA[0] ;
	}
この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ



    top

    %d人のブロガーが「いいね」をつけました。