我正在使用C ++开发游戏。我已经在很多地方读过,基本上应该不惜一切代价避免使用C ++中的指针。我还在学习C ++,并对此感到有些困惑。
我想要一个持久的玩家对象并且在游戏会话期间存在。此对象将包含玩家库存,玩家统计数据等。
玩家的库存基本上只是一个包含项目对象的向量(我创建的'Item'类)。
如果有人能够澄清以下内容,那么我就会清除我的困惑:
非常感谢任何帮助!
答案 0 :(得分:1)
是的,原始,C风格的指针被认为是坏的。智能指针没问题。在某些情况下,您需要使用(智能)指针 - 多态对象的集合,例如:std::vector<std::unique_ptr<IObject> >
。
持久对象不必在堆上。它可以是具有静态存储持续时间的对象,甚至是足够长的自动对象 - 即您在main()
中创建它。
多种方式 - 您可以抛出异常(可能过于苛刻)或以std
方式返回迭代器 - 类似于.end()
。
答案 1 :(得分:1)
我个人会建议使用共享指针(来自boost或来自std)。不要使用原始指针。 C ++还有其他智能指针,如auto_ptr,但今天几乎没有人使用它们。 如果要在堆上分配内容,请执行以下操作:
std::shared_ptr<ClassA> A(new ClassA());
这比使用原始指针更安全。当你超出范围时,共享指针将确保它所指向的对象将被销毁。原始指针不是这样做的,这意味着你必须自己手动销毁所有东西