我有这个C ++结构

struct PACKET
{
    BOOL isTCPPacket;
    BOOL isUDPPacket;
    BOOL isICMPPacket;
    BOOL isIGMPPacket;
    BOOL isARPPacket;
    BOOL isIPPacket;

    struct PETHER_HEADER
    {
        string  DestinationHost;
        string  SourceHost;
        struct PROTOCOL_TYPE
        {
            string  Name;
            WORD    Identifier;
        } ProtocolType;
    } EthernetHeader;
};


我有

PACKET* Packet;
PACKET* Packets[6];


我如何将Packet的内容复制到Packets [3]中,例如,知道Packet的内容对于Packets中的每个阵列都会有所不同[INDEX]

我尝试过memcpy作为

memcpy((void*)&Packets[i],(void*)&Packet,sizeof(PACKET));


没有运气

最佳答案

Packets[3] = Packet;怎么样?这完全符合您的要求(将作为指针的Packet的内容复制到Packets[3]中)。

如果要复制值,则也可以使用赋值:*(Packets[3]) = *Packet;,假设指针有效。编译器为PACKET生成的赋值运算符应该可以正常工作。

在这种情况下,我会避免使用memcpy,因为某些成员是std::string-您一定会遇到麻烦。

10-04 20:45