克隆对象任意次数

时间:2015-12-27 17:46:50

标签: c++ sdl-2

我是使用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;
            }
        }

如何在不必为每个新敌人命名的情况下这样做?这个问题通常是如何处理的?我已经研究过复制构造函数和克隆,但它们似乎无法解决这个问题。

1 个答案:

答案 0 :(得分:0)

如果您使用复制构造函数并且可能将它们存储在向量或数组中,那么像vector.push_back(new Enemy(orig))这样的东西就可以解决问题。