2010-08-25 82 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'? – 2010-08-25 15:52:59

+0

您使用g.AddGameObject作为spellMenu,但只使用gameMenu的方法而不使用g对象上的方法。 – dwarFish 2010-08-25 16:01:36

回答

0

我会怀疑这个类CMenu的有是静态成员变量:所以只有一个在内存中的数据副本,当你改变它的spellMenu,它也改变了gameMenu。

您是否有权访问cMenu的代码?如果是这样,你可以看看在cMenu :: SetRegion()中修改的变量。这些变量的定义是否是静态的?如果是这样,那就是你的问题。

相关问题