又一个C ++列表问题

时间:2011-04-16 18:59:29

标签: c++ list loops

我非常困在这里,我已尽力而为,但我无法解决。

我想这样做:

list<Enemy> *_myEnemies;
Enemy* _myEnemiesPushBack;

_myEnemiesPushBack = new Enemy;
_myEnemiesPushBack->load("earth.png");
_myEnemiesPushBack->setPos(150, 150);
_myEnemies->push_back(_myEnemiesPushBack); //error here

错误:

  

\ init.cpp(41):错误C2664:'无效   std :: list&lt; _Ty&gt; :: push_back(_Ty&amp;&amp;)':   无法从'Enemy'转换参数1   *'到'Enemy&amp;&amp;' 1 GT;用1> [1> _Ty =敌人1&gt;
  ] 1&gt;原因:无法转换   从'Enemy *'到'Enemy'1&gt;
  没有构造函数可以获取源代码   类型或构造函数重载   决议是模糊的

谢谢!

3 个答案:

答案 0 :(得分:3)

根本不需要指针。

std::list<Enemy> myList;

Enemy en;
en.load("earth.png");
en.setPos(150,150);
myList.push_back(en);

typedef std::list<Enemy>::iterator iterator;
for (iterator it = list.begin(), end = list.end(); it != end; ++it) {
  it->move();
}

我还鼓励你在某处(对于初学者)获取一本关于C ++的书,或者如果这是你的特殊障碍,那么关于STL。遗憾的是,C ++并不是你可以在没有指导的情况下进行实验的(至少在起初)。

答案 1 :(得分:2)

你错放了*

list<Enemy*> _myEnemies;
Enemy* _myEnemiesPushBack;

_myEnemiesPushBack = new Enemy;
_myEnemiesPushBack->load("earth.png");
_myEnemiesPushBack->setPos(150, 150);
_myEnemies.push_back(_myEnemiesPushBack); //error here

答案 2 :(得分:0)

你已经获得了敌人的名单,并且正试图将指向敌人的指针推入该列表。它们的类型不同。

看看这里: Pointers @ cplusplus