有好几种方法来初始化一个裸结构体,包括:
但上面的方法是容易出错的,因为你可能初始化了太多或太少的内存。而且,为了正确地初始化一个裸结构体,你不得不总是使用sizeof:
LVITEM itemData;
memset( &itemData, 0, sizeof( itemData));
下面的raw_initialize函数自动完成了上面的整个过程,并且不容易出错:
#include <string.h>
template< class T>
void raw_initialize( T & value, char chFill =
0)
{
memset( (void *)&value, chFill, sizeof( T));
}
使用raw_initialize的时机:
下面是一个应用raw_initialize的例子:
#include <windows.h>
#include <commctrl.h>
// . . . code
HWND hList = /* find the List View window */;
LVITEM itemData;
raw_initialize( itemData);
// we're setting the text and image
itemData.mask = LVIF_TEXT | LVIF_IMAGE;
itemData.iImage = 1;
itemData.pszText = "This is some new text";
ListView_SetItem( hList, &itemData);