我想写一个结构体,其中的成员变量的类型未知
然后在View类中定义该结构体的对象
然后读取文件,从文件头的注释得知结构体对象中的成员变量的类型,于是让该成员变量为该类型,然后赋值。
请问该如何实现?

解决方案 »

  1.   

    什么意思?如果是未知类型的,可以用Void*
      

  2.   

    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;
    .....
    }
      

  3.   

    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;
      

  4.   

    typedef struct packet
    {
        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;
      

  5.   


    template<typename T>
    struct Struct 
    {
    T t;
    };
      

  6.   

    我现在用void *但是存进去的数据不知道该如何读出来
      

  7.   

    使用强制转换指针类型,然后用其结构成员访问即可MY_MEB_STRUCT *p=(MY_MEB_STRUCT *)theStruct.pVoid;
    p->...
      

  8.   

    类型强制转换
    ((C*)s.a)->c = 1;