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

在C+中创建列表时出错+; 我试图在C++中创建一个列表,但是它在构建代码时给了我错误。,c++,list,build,console,makefile,C++,List,Build,Console,Makefile,以下是创建自定义列表的代码: std::list< osg::ref_ptr<osg::PositionAttitudeTransform> > bulletList = new std::list< osg::ref_ptr<osg::PositionAttitudeTransform> > ; std::listbulletList=新std::list; 控制台上的错误表明: 错误:请求从'std::list*'转换为非标量类型'std:

以下是创建自定义列表的代码:

std::list< osg::ref_ptr<osg::PositionAttitudeTransform> > bulletList = new std::list< osg::ref_ptr<osg::PositionAttitudeTransform> > ;
std::listbulletList=新std::list
控制台上的错误表明:

错误:请求从
'std::list*'
转换为非标量类型
'std::list'


如何解决这个问题?< /p> < p>问题解决了,将“*”添加到列表的声明中,C++是如此令人讨厌的LOL

< p>创建STD::列表不是STD::列表*,所以没有理由使用新的方法来分配存储。编译器会为你做这个。< /P> < P>我的评论中说,C++不是java。 您所需要的就是:

std::list< osg::ref_ptr<osg::PositionAttitudeTransform> > bulletList;
std::listbulletList;
如果出于某种原因,您确实希望动态创建列表,那么您可以使用指针

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

然后,您现在最头疼的是确保调用了
delete
,否则会出现内存泄漏。

我不会将其称为已解决。宁可去掉
=
和它后面的所有东西,除了分号。请买一本书。也可以考虑使用<代码> STD::向量< /代码>。无论你在做什么,它都有可能比std::list更好。如果有什么不同的话,我会说必须重复那个长的类型名称是令人讨厌的部分,你不必重复。
C++是如此令人讨厌
,当你发现你使用了“解决方案”而导致内存泄漏时,它会更令人讨厌。同样的想法: