Pointers 从同一个类创建两个单独的实例会导致它们链接在一起吗?

Pointers 从同一个类创建两个单独的实例会导致它们链接在一起吗?,pointers,dynamic,class,new-operator,instantiation,Pointers,Dynamic,Class,New Operator,Instantiation,我遇到的问题是,我从一个类创建了两个不同的菜单。当我完成第一个,一切都很好。但是,当我创建第二个并设置其区域时,它也会修改前一个。当我调用Display时,它只是翻转一个布尔变量,它会同时翻转这两个变量,而不仅仅是我要调用的那个变量 cMenu* gameMenu; cMenu* spellMenu; gameMenu = new cMenu(); for(int i=0; i< 25; i++) gameMenu->AddButton("test", i); AddG

我遇到的问题是,我从一个类创建了两个不同的菜单。当我完成第一个,一切都很好。但是,当我创建第二个并设置其区域时,它也会修改前一个。当我调用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);

我怀疑cMenu类的成员变量是静态的:因此内存中只有一个数据副本,当您为spellMenu更改它时,gameMenu也会更改它


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

你使用g.AddGameObject作为拼写菜单,但只使用gameMenu的方法,而不是g对象上的方法。