Создание двух отдельных экземпляров из одного класса заставляет их быть связаны друг с другом? - PullRequest
0 голосов
/ 25 августа 2010

У меня проблема в том, что я создаю два разных меню из одного класса.Когда я заканчиваю первый, все в порядке.Однако, когда я создаю второй и устанавливаю его регион, он также изменяет предыдущий.Когда я вызываю 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 Ответ

0 голосов
/ 06 января 2011

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

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

...