【问题标题】:Error Creating List in C++ [closed]在 C++ 中创建列表时出错 [关闭]
【发布时间】:2014-06-05 20:46:58
【问题描述】:

我正在尝试在 C++ 中创建一个列表,但在我构建代码时它给了我错误。

这是我创建自定义列表的代码:

std::list< osg::ref_ptr<osg::PositionAttitudeTransform> > bulletList = new std::list< osg::ref_ptr<osg::PositionAttitudeTransform> > ;

控制台上的错误是这样的:

错误:从 ‘std::list&lt;osg::ref_ptr&lt;osg::PositionAttitudeTransform&gt; &gt;*’ 转换为非标量类型 ‘std::list&lt;osg::ref_ptr&lt;osg::PositionAttitudeTransform&gt; &gt;’ 请求

我该怎么做?

【问题讨论】:

标签: c++ list build console makefile


【解决方案1】:

正如我的评论所说,C++ 不是 Java。

你只需要这个:

std::list< osg::ref_ptr<osg::PositionAttitudeTransform> > bulletList;

如果出于某种原因你真的想动态创建一个列表,那么你可以使用指针。

std::list< osg::ref_ptr<osg::PositionAttitudeTransform> >* bulletList = new std::list< osg::ref_ptr<osg::PositionAttitudeTransform> >();

那么您现在很头疼的是要确保调用了delete,否则会出现内存泄漏。

【讨论】:

    【解决方案2】:

    您正在创建 std::list<...> 而不是 std::list<...>* 因此没有理由使用 new 为其分配存储空间。编译器会为你做这件事。

    【讨论】:

      【解决方案3】:

      解决了在列表的声明中添加“*”的问题,C++ 太烦人了,哈哈

      【讨论】:

      • 我不会说它解决了。宁可去掉= 以及它之后的所有内容,但分号除外。请拿一本书。还可以考虑使用std::vector。无论您在做什么,它都有可能胜过std::list。如果有的话,我想说必须重复那个长类型名称是令人讨厌的部分,你不必这样做。
      猜你喜欢
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      • 2016-10-18
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      • 2015-09-24
      • 2011-09-19
      相关资源
      最近更新 更多