1

ある構造から別の構造にデータをコピーしようとしています。各構造体が処理できるバイトは同じです。私の宣言と memcpy は次のとおりです。

    typedef struct{
        CString strNumber;
        CString strAlpha;

    } _Number;

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

_Store Data1;
_Store Data2;

ここで、最初の構造体 Data1 にデータがあり、2 番目の構造体が宣言されたとします。

次のコードを使用しています。

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

エラーが出てコンパイルできません。何か案は?データをコピーする他の方法はありますか?

4

2 に答える 2

7

&両方の構造体で使用する必要があります。

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

注意:(MFCのような場合)ビット単位でコピーできないメンバー変数が_Store含まれています。ビット単位でコピー可能な型にのみ使用する必要があります。そうしないと、未定義の動作に遭遇するリスクがあります。CStringCStringmemcpy()

于 2010-12-14T11:18:54.813 に答える
2

もう 1 つの明白なアプローチは単純な代入です。つまり、Data2 = Data1;

これにより、_Store 構造体に含まれるバイト数や、CString に演算子 = があるかどうかを気にする必要がなくなります。

于 2010-12-14T11:32:51.310 に答える