typedef struct S1
{
int a;
char[10] b;
int c;
}S1;typedef struct S2
{
int a;
char[20] b;
int c;
}S2;在函数中想根据iFlag来定义不同类型的结构变量,能实现吗?void xxx(int iFlag)
{
#if iFlag==1
S1 s;
#else
S2 s;
#endif....
}
{
int a;
char[10] b;
int c;
}S1;typedef struct S2
{
int a;
char[20] b;
int c;
}S2;在函数中想根据iFlag来定义不同类型的结构变量,能实现吗?void xxx(int iFlag)
{
#if iFlag==1
S1 s;
#else
S2 s;
#endif....
}
{
if( iFlag==1 )
S1 s;
else
S2 s;
....
}
这样不行么?
{
virtual int GetA() = 0;
virtual char* GetB() = 0;
virtual int GetC() = 0;
};typedef struct S1 : public S
{
int a;
char[10] b;
int c;
int GetA() {return a;}
char* GetB() {return b;}
int GetC() {return c;}
}S1; typedef struct S2 : public S
{
int a;
char[20] b;
int c;
int GetA() {return a;}
char* GetB() {return b;}
int GetC() {return c;}
}S2; void xxx(int iFlag)
{
S* pS;
if (iFlag==1)
pS = new S1;
else
pS = new S2; int aa = pS->GetA();
char* bb = pS->GetB();
int cc = pS->GetC();
}
....
memcpy(&s,pBuf,sizeof(s));
....
}需要载入一段数据到这个结构中,如果宏不能实现根据需要定义变量类型,那还有什么好方法呢?
class S1:public S
{
int a;
char[10] b;
int c;
}S1;class S2:public S
{
int a;
char[20] b;
int c;
}S2; 然后S*pS = NULL;
int len=0;
if (iFlag==1)
{
pS = new S1;
len = sizeof(S1);
}
else
{
pS = new S2;
len = sizeof(S2);
}
memcpy(pS,pBuf,len);