我想在结构体里面加入一个CString对象,不知道结构体中能否包含对象??

解决方案 »

  1.   

    可以,但是的是MFC程序,建议包含std::string,stl标准库
      

  2.   

    "可以,但是在序列化的时候(写到文件中或者内存拷贝之类),要注意成员类的特殊性,不能按照字节拷贝。"
    应该可以用拷贝函数吧。以下是我做的一个测试://myStruct.h
    struct subStruct
    {
            int subVal;
    };
    struct testStruct
    {
    int iVal;
    char cVal;
    subStruct mySub;
    };
    err = memcpy_s(&anotherStruct, sizeof(testStruct), pAStruct, sizeof(testStruct));
    结果正确。
      

  3.   

    最好不要放CString,而是放TCHAR数组,否则会比较麻烦,因为STRUCT一般用于轻量级的数据类型。
      

  4.   

    to Rambo8202:
    你举的例子可以拷贝,是因为你的struct中都是基本数据类型,基本数据类型都是定长度的,所以可以直接memcpy。但是如果一个struct中拥有CString等对象的话,你不可以直接memcpy,如果你清楚一个CString对象跟一个int对象的却别的话,你就明白为什么不可以。可以使用两种方法:
    1、不用struct,用class,并且从CObject继承,重载Serialize(CArchive& ar)函数,让这个class支持串行化存储
    2、自己写一个串行化的方法,针对你这个struct,遇到CString的地方,只存储CString的值
      

  5.   

    如果要放CString,建议把结构改成类,过载一下=号