我的应用程序因任何原因不断崩溃。我是向量的新手,所以我不仅可能有些愚蠢。
#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.任何建议?
答案 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()的结果。