这是一款带有坦克的C ++游戏机游戏。问题是坦克壳部分。 我想创建一个PlayerTankShell类的对象,并在每次按下空格按钮时将其添加到链接列表中。我怎么能这样做?
这是我的代码:
#include <iostream>
#include <conio.h>
#include <list>
using namespace std;
#define ATTACK 32
class PlayerTankShell
{
int x;
int y;
int speed;
bool isExist;
public:
PlayerTankShell(bool exists)
{
isExist = exists;
}
bool getExistense()
{
return isExist;
}
};
int main()
{
char input;
input = getch();
if (input == ATTACK)
{
// Here create an object and add it to the linked list
}
// My test so far:
PlayerTankShell *s1 = new PlayerTankShell(1);
PlayerTankShell *s2 = new PlayerTankShell(1);
PlayerTankShell *s3 = new PlayerTankShell(1);
list<PlayerTankShell> listShells;
listShells.push_back(*s1);
listShells.push_back(*s2);
listShells.push_back(*s3);
list<PlayerTankShell>::iterator i;
for (i = listShells.begin(); i != listShells.end(); i++)
{
cout << "exists=" << i->getExistense() << endl;
}
return 0;
}
答案 0 :(得分:0)
你想要这样的东西:
std::list<PlayerTankShell> shells;
然后你可以添加:
shells.push_back(PlayerTankShell(true))
答案 1 :(得分:0)
如果您希望将指针添加到列表中的PlayerTankShell
,您可能需要使用一些智能指针模板类,例如shared_ptr
(如果那些PlayerTankShell
也在代码的其他部分共享,那么一旦引用计数达到零,它们就会被破坏,即使用STL容器而shared_ptr
你有一个“确定性垃圾收集器强>“):
// List of smart pointers to PlayerTankShell
list<shared_ptr<PlayerTankShell>> shells;
// Add new PlayerTankShell to the list
shells.push_back( make_shared<PlayerTankShell>(true) );