我非常困在这里,我已尽力而为,但我无法解决。
我想这样做:
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;
没有构造函数可以获取源代码 类型或构造函数重载 决议是模糊的
谢谢!
答案 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