我是使用SDL2的初学者C ++程序员。这是我的问题。
我试图克隆同一个类的对象任意次,而不必为每个新对象指定一个特定的名称。
我定义了一个Enemy1类:
class Enemy1
{
public:
//The dimensions of the enemy
static const int Enemy1_WIDTH = 20;
static const int Enemy1_HEIGHT = 20;
//Maximum axis velocity of the dot
static const int Enemy1_VEL = 10;
//Initializes the variables
Enemy1();
//Moves the enemy
virtual void move();
//Shows the enemy on the screen
virtual void render();
private:
//The X and Y offsets of the enemy
int mPosX, mPosY;
//The velocity of the enemy
int mVelX, mVelY;
};
我定义了类中的所有函数,例如:
Enemy1::Enemy1()
{
//Initialize the offsets
mPosX = 320;
mPosY = 240;
//Initialize the velocity
mVelX = 5;
mVelY = 5;
}
然后在我的主循环中:
//Make first enemy
Enemy1 enemy1;
//While application is running
while (!quit)
{
//Handle events on queue
while (SDL_PollEvent(&e) != 0)
{
//User requests quit
if (e.type == SDL_QUIT)
{
quit = true;
}
//Make more enemies
if (SDL_GetTicks() > spawnTime)
{
Enemy1 **arbitrary_name_of_copied_enemy**
spawnTime = spawnTime + spawnTimeInterval;
}
}
如何在不必为每个新敌人命名的情况下这样做?这个问题通常是如何处理的?我已经研究过复制构造函数和克隆,但它们似乎无法解决这个问题。
答案 0 :(得分:0)
如果您使用复制构造函数并且可能将它们存储在向量或数组中,那么像vector.push_back(new Enemy(orig))这样的东西就可以解决问题。