[英]C++ : Copy Array of Structure and return the array of structure
我正在使用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
因此,當嘗試顯示結構的內容時,它會返回“分段錯誤”
任何想法,建議?
您的結構COMMAND_PACKET_STRUCT應該在C ++中這樣定義
struct COMMAND_PACKET_STRUCT { QString ItemDataName; DATA_TYPE ItemDataType; int ItemDataLength; };
使用默認的構造函數分配空間。
maxSize = ((sizeof(_OA_Packet)/sizeof(COMMAND_PACKET_STRUCT))); _packetStruct = new COMMAND_PACKET_STRUCT[maxSize];
復制內容。
std::copy(_OA_Packet,_OA_Packet+maxSize,_packetStruct);
_packetStruct是指針,您可能要檢查它指向的數據大小。
qDebug() << sizeof(*_packetStruct); // return 4 -->will be 12
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.