COleVariant var; switch(var.vt) { case VT_BOOL:break; case VT_I1:break; case VT_UI1:break; case VT_I2:break; case VT_UI2:break; case VT_I4:break; case VT_UI4:break; ..... }
typedef struct _S { void* a; void* b; }S;class C { public: int c; };class D { public: char d; };S s; s.a = new C(); s.b = new D(); ((C*)s.a)->c = 1;
switch(var.vt)
{
case VT_BOOL:break;
case VT_I1:break;
case VT_UI1:break;
case VT_I2:break;
case VT_UI2:break;
case VT_I4:break;
case VT_UI4:break;
.....
}
{
void* a;
void* b;
}S;class C
{
public: int c;
};class D
{
public: char d;
};S s;
s.a = new C();
s.b = new D();
((C*)s.a)->c = 1;
{
int type; // 自定义的类型标识;
int len; // 整个结构的长度
char pData[0]; // 数据区开始指针
}PACKET, *LPPACKET;// 比如你要用这个结构来放一个RECT:
int nSize = sizeof(PACKET) + sizeof(RECT);
LPPACKET pPacket = (LPPACKET)new char[nSize];
pPacket->type = 0; /*RECT 类型的标识*/
pPacket->len = nSize;
((RECT*)pData)->left = ((RECT*)pData)->top = 0;
((RECT*)pData)->right = ((RECT*)pData)->bottom = 100;
template<typename T>
struct Struct
{
T t;
};
p->...
((C*)s.a)->c = 1;