gpt4 book ai didi

C++ : Copy Array of Structure and return the array of structure

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:28:29 26 4
gpt4 key购买 nike

我正在使用 Qt Creator 开发应用程序。

我不是一个好的C++程序员,所以可能会有概念上的错误等。

我在复制结构数组并返回结构时遇到问题。

有很多与类似标题相关的解决方案,但无法解决我的问题。

这是我的代码:

ABC.h

typedef struct command_packet_struct
{
QString ItemDataName;
DATA_TYPE ItemDataType;
int ItemDataLength;
} COMMAND_PACKET_STRUCT;

class ABC
{
private:

COMMAND_PACKET_STRUCT* getHeaderTitle(int index);
COMMAND_PACKET_STRUCT *_packetStruct ;
};

ABC.cpp

COMMAND_PACKET_STRUCT _OA_Packet [] = {
{"ERROR\nMAIN CODE" , DATA_TYPE_NUM, 5 },
{"ERROR\nSUB CODE" , DATA_TYPE_NUM, 4 },
{"SCALE VERSION" , DATA_TYPE_ASCII, 8 },
{"E-PRE VERSION" , DATA_TYPE_ASCII, 8 }
};

COMMAND_PACKET_STRUCT* PCU_SIM_ORDER_TASK::getHeaderTitle(int index)
{
int maxSize;

if (_packetStruct != NULL)
{
_packetStruct = 0;
}

_packetStruct = new COMMAND_PACKET_STRUCT(*_OA_Packet);
maxSize = ((sizeof(_OA_Packet)/sizeof(COMMAND_PACKET_STRUCT)) - 1);
memcpy(_packetStruct, _OA_Packet, maxSize) ;

qDebug() << sizeof(COMMAND_PACKET_STRUCT); // return 12
qDebug() << sizeof(_packetStruct); // return 4
qDebug() << sizeof(_OA_Packet); // return 48

return _packetStruct;
}

上面的代码显示了我为结构数组所做的实现。

我需要复制结构数组

           _OA_Packet

           _packetStruct

但是当我尝试获取 _packetStruct 的大小时,它给出了 4_OA_Packet 的大小给出了 48

因此,当尝试显示结构的内容时,它会返回"segmentation fault error"

任何想法,建议??

最佳答案

  1. 您的结构 COMMAND_PACKET_STRUCT 应该在 C++ 中这样定义

    struct COMMAND_PACKET_STRUCT 
    {
    QString ItemDataName;
    DATA_TYPE ItemDataType;
    int ItemDataLength;
    };
  2. 使用默认构造函数分配空间。

    maxSize = ((sizeof(_OA_Packet)/sizeof(COMMAND_PACKET_STRUCT)));   
    _packetStruct = new COMMAND_PACKET_STRUCT[maxSize];
  3. 复制内容。

    std::copy(_OA_Packet,_OA_Packet+maxSize,_packetStruct);
  4. _packetStruct 是指针,您可能想检查它指向的数据大小。

    qDebug() << sizeof(*_packetStruct);               // return 4 -->will be 12

关于C++ : Copy Array of Structure and return the array of structure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15565680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com