gpt4 book ai didi

c++ - 为什么一个文件没有错误而其他文件有错误 - "Non Static Member Reference mush be relative to specific object"

转载 作者:行者123 更新时间:2023-11-28 03:35:01 27 4
gpt4 key购买 nike

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

无论如何.. 我复制了在 texturemanager 中 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() 给了我那个错误和其他任何地方(如果我创建一个新函数。但是计时器变量按预期工作。

是否有一些奇特的方法我应该做一个指向 std::map 的指针?据我所知,此代码与纹理管理器的代码 100% 相同?

感谢您的建议!

最佳答案

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

  • 您不需要指向 std::map 的指针——它不会为您保存任何拷贝,并且可能会花费更多的内存和精力进行维护。
  • 如果您不关心各种单例的销毁顺序,请为它们使用unique_ptr:参见headerimplementation .
  • Boost 有一个非常好的不可复制,使用它(例如,您的实现仍然允许赋值)。

至于为什么您的版本不起作用:在您的实现文件的第 23 行,您指的是 gameObjects 而未指定您指的是哪个实例。您可能指的是 instance->gameObjects

关于c++ - 为什么一个文件没有错误而其他文件有错误 - "Non Static Member Reference mush be relative to specific object",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11182382/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com