Сбой при использовании оператора назначения по умолчанию моего класса [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Сбой при использовании оператора назначения по умолчанию моего класса [закрыто]

Сообщение Anonymous »

I have a crash when using Qt5 in C++11.
I have a normal struct MyDataStruct, which has several members, some of them are Qt classes like QString, QMap, etc. In the code, at the start of a function, I instantiate this struct and throughout the function I fill it with data:

Код: Выделить всё

Class MyFolder
{
public:
QString m_name;
QString m_FolderName;
QString m_FolderValue;
int32_t m_level;
};

class MyBLock
{
public:
QString m_name;
QString m_BlockName;
QString m_BlockValue;
QString m_blockDescription;
};

class MyDataStruct
{
public:
uint32_t                    m_signature = 0;
QString                     m_currentValue;
QString                     m_expectedValue;
QString                     m_specificValue;
QString                     m_blockValue;
QString                     m_elementName;
QString                     m_version;
QString                     m_level;
QString                     m_machineValue;
QString                     m_userValue;
QString                     m_fileValue;
QString                     m_description;
QString                     m_dateValue;
QMap     m_folderMap;
QStringList                 m_levelList;
QStringList                 m_nameList;
QStringList                 m_valueList;
QStringList                 m_dateList;
QList             m_blockList;
QMap      m_blockMap;
long                        m_firstError = 0;
long                        m_secondError = 0;
};

long MyClass::myFunction()
{
MyDataStruct data;

// Fill the 'data' struct with values
// Lot of things happen here to acquire and fill the data
...

// At this point, after the struct is filled with data, all members of 'data' are correctly filled.
// The crash happens here during assignment
MyDataStruct newData = data; // Crash occurs here

return 0;
}
< /code>
Затем в конце функции я использую оператор назначения для создания нового экземпляра этого класса, и это строка, где происходит сбой. Тем не менее, я не слишком переживаю с C ++ или QT, поэтому, когда они используются вместе, я не уверен, как они создаются. Это выглядит совершенно нормально, и именно поэтому странная часть начинается отсюда. Но когда я вступаю в оператор назначения, я вижу, что в новом экземпляре некоторые участники, в основном Qstring 
в начале, уже повреждены, они имеют странные значения, такие как? не сбои.

Код: Выделить всё

m_signature
) до конца struct (не используя clear () на этот раз), тогда назначение по -прежнему работает правильно без сбоя (если я сохраняю его в начале, был использован использование, когда второй член, Qstring an? Повреждает строку или что -то подобное, но, как я уже упоминал, я не слишком опытен в этой области.
Что здесь происходит, и как я могу ее исправить?>

Подробнее здесь: https://stackoverflow.com/questions/797 ... f-my-class
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»