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になります。
したがって、構造体の内容を表示しようとすると、「セグメンテーション違反エラー」が返されます。
任意のアイデア、提案??