对于memcpy,错误编译器无法将参数2从MyStruct1转换为const void *

时间:2010-12-14 11:15:15

标签: c++ c memcpy

我正在尝试将数据从结构复制到另一个。每个结构可以处理的字节是相同的。我的声明和memcpy如下:

    typedef struct{
        CString strNumber;
        CString strAlpha;

    } _Number;

    typedef struct{
        CString strIterration;
        _Number NumberOne;
        _Number NumberTwo;
    } _Store;

_Store Data1;
_Store Data2;

现在假设第一个结构Data1有数据,第二个结构只是声明。

我使用以下代码:

memcpy(&Data2, Data1,   sizeof(_Store));

我无法编译,因为出现错误。有任何想法吗?还有其他任何复制数据的方法吗?

2 个答案:

答案 0 :(得分:7)

您需要在两个结构上使用&

memcpy(&Data2, &Data1, sizeof(_Store));

注意:_Store包含CString成员变量(如果它类似于MFC CString)不是按位可复制的。您应该只对可按位复制的类型使用memcpy(),否则可能会遇到未定义的行为。

答案 1 :(得分:2)

显而易见的其他方法是简单分配,即Data2 = Data1;

这使您无需关心_Store结构中的字节数以及CString是否具有operator =。