2010-08-25 2 views
0

Проблема, с которой я сталкиваюсь, это создание двух разных меню из одного класса. Когда я заканчиваю первый, все в порядке. Однако, когда я создаю второй и устанавливаю его регион, он также изменяет предыдущий. Когда я вызываю Display(), который просто переворачивает логическую переменную, он переворачивает его для обоих, а не только для того, к которому я звоню.Создание двух отдельных экземпляров из того же класса заставляет их соединяться вместе?

cMenu* gameMenu; 
cMenu* spellMenu; 

    gameMenu = new cMenu(); 
for(int i=0; i< 25; i++) 
    gameMenu->AddButton("test", i); 
AddGameObject(gameMenu); 

spellMenu = new cMenu(); 
spellMenu->SetRegion(580, 50, 52, 250, FORMAT_5X1); // This modifies gameMenu as well 
spellMenu->Display(); // So does this 
g.AddGameObject(spellMenu); 
+1

Зачем использовать 'new' здесь? –

+0

Вы используете g.AddGameObject для spellMenu, но просто используйте метод для gameMenu, а не метод на g-объекте. – dwarFish

ответ

0

Я подозреваю, что класс CMenu имеет переменные-члены, которые являются статическими: таким образом, есть только одна копия данных в памяти и при изменении его spellMenu, она изменяется также для gameMenu.

У вас есть доступ к коду пользователя cMenu? Если это так, вы можете посмотреть переменные, измененные внутри cMenu :: SetRegion(). Являются ли какие-либо определения этих переменных статическими? Если это так, есть твоя проблема.

 Смежные вопросы

  • Нет связанных вопросов^_^