0

我有一个纹理管理器,我作为单例运行,并希望以同样的方式制作一个对象管理器..

无论如何..我复制了在纹理管理器中 100% 工作的 EAXACT 代码,但在对象管理器中它给了我这个错误“非静态成员引用必须与特定对象相关”

我认为这与std::map?

这是我 100% 工作的 textureManager 头文件和 cpp 文件。 http://ideone.com/6bZQG | http://ideone.com/jjo2M

这是不工作的 ObjectManager 的开始... http://ideone.com/rhSim | http://ideone.com/uLj4X

现在,基本上指向的指针std::map是我得到错误的地方..(ObjectManager.cpp 的第 23 行)delete调用在destroy()给我那个错误和其他任何地方(如果我创建一个新函数。但是计时器变量按预期工作.

有什么花哨的方法我应该做一个指向 a 的指针std::map吗?据我所知,此代码与纹理管理器的代码 100% 相同?

感谢您的任何建议!

4

1 回答 1

2

大致重复我在 IRC 上所说的话:

  • 您不需要指向的指针std::map——它不会为您保存任何副本,并且可能会花费更多的内存和维护工作。
  • 如果您不关心各种单例被销毁的顺序,unique_ptr请为它们使用 a :请参阅headerimplementation
  • Boost 有一个非常好的不可复制,使用它(例如,您的实现仍然允许分配)。

至于为什么您的版本不起作用:在您的实现文件的第 23 行,您指的是gameObjects没有指定您的意思的实例。你可能的意思是instance->gameObjects

于 2012-06-25T01:16:16.210 回答