C ++向量问题

时间:2011-09-15 09:04:27

标签: c++ vector

我的应用程序因任何原因不断崩溃。我是向量的新手,所以我不仅可能有些愚蠢。

#include <iostream>
#include <vector>    

using namespace std;

class Projectile
{
private:
    SDL_Surface *projectile;
    void load();

public:
    int count;

    vector< int > c;
    vector< vector< int > > p;

    int positionX;
    int positionY;

    Projectile();
    void newProjectile( int, int );
    void drawCurrentState( SDL_Surface* );
};

...
...

void Projectile::newProjectile( int x, int y )
{
    positionX = x;
    positionY = y;

    c.push_back( 10 );
    c.push_back( 10 );

    //p.push_back( c ); //trying to start off simple before i do multidimensional.
}

void Projectile::drawCurrentState( SDL_Surface* destination )
{   
    SDL_Rect offset;
    offset.x = c[0]; //will eventually me the multidimensional p vector
    offset.y = c[1]; //

    SDL_BlitSurface( projectile, NULL, destination, &offset );
}

我到底错在了什么?我推回两个值(完成测试后将是x和y整数)但是当它到达脚本的offset.x = c[0];部分时它似乎崩溃了。

我认为c [0]和c [1]都应该等于10.任何建议?

3 个答案:

答案 0 :(得分:3)

你是对的,[0]和[1]都应该是10。

请确保首先调用newProjectile(),并确保没有其他问题,例如无效的目标指针等。

答案 1 :(得分:2)

代码似乎没问题,但是调用的顺序很重要。确保在调用drawCurrentState()之前调用newProjectile(),例如:

Projectile * projectile = new Projectile();
projectile->newProjectile(1,1);
projectile->drawCurrentState( ... );

答案 2 :(得分:1)

也许向量c在读取c [0]的行处是空的。检查c.size()的结果。