2014-02-08 1 views
0

В моем коде отображается неустойчивое поведение. Я подозреваю, что какой-то член класса является причиной проблемы. Меня поражает то, что если объявление другого члена в одном классе, мой код начинает работать нормально. Это единственное изменение, которое я применяю к коду: объявление другого члена класса. Я не придаю ему никакой ценности, ничего. Просто объявляю это. Кроме того, если я удалю неиспользуемого члена класса, проблема будет решена. Каков эффект использования неиспользуемых членов класса?Могут ли неиспользуемые члены класса самостоятельно создавать код?

class Heroes() 
{ 
public: 
//All the class members 

int TRG; //The one I suspect being the issue 

int FakeClassMember; //If I add this one, problem disappears 
}; 
+5

Вы можете проиллюстрировать этот вопрос с какой-то код? –

+5

Вы, вероятно, повредите память. Добавление неиспользуемых членов изменяет размер объектов класса, что может перемещать вещи и означает, что ваша коррупция имеет менее очевидные последствия. –

+0

Вы используете Visual C++? – Artur

ответ

1

Итак - Одна вещь, предложенная Аланом, заключается в том, что вы можете повредить свою память. Например, в одном месте вы используете sizeof (ваш класс), а в другом месте вы вводите значение, которое, по вашему мнению, является правильным.

Другое дело, что вы используете Visual C++, и все может быть совершенно противоположным, чем вы думаете. После того, как вы добавите своего «неиспользуемого» члена, вы можете на самом деле испортить код с ним, если он имеет недопустимое имя, был объявлен уже и т. Д. В таком случае, если ваш Visual C++ настроен на запуск последней правильной программы (см. Ниже). В таком случае вы запускаете программу, у которой не было «неиспользуемого» члена, но вы думаете, что добавление ее фиксирует все. Проверьте приведенные ниже настройки и прочитайте предупреждения компилятора. Он немного запутался, но часто бывает неосторожным. Не только clisk запускать/ок и т.д.

enter image description here