ヘッダーにこれがあります:
struct Surface {
char *objectName;
int xPos;
int yPos;
SDL_Surface *surface;
};
struct WorldSurface {
Surface *surface = new Surface[MAX_SURFACES];
int counter = 0;
int current = 0;
};
WorldSurface *worldSurface;
次に、.cpp で worldSurface を初期化します。
WorldSurface *worldSurface = new WorldSurface[MAX_LEVELS];
そして、この関数は、何があっても機能しません.= NULL、ポインター、.の代わりに->をいじってみました...(私はポインターサブジェクトにあまり精通していないことに注意してください)
void drawClass::addSurface(char* objectName, char* surfaceFile, int xPos, int yPos, int drawLevel) {
int cnt = worldSurface[drawLevel].counter;
worldSurface[drawLevel].surface[cnt].objectName = objectName;
worldSurface[drawLevel].surface[cnt].surface = load_image(surfaceFile);
worldSurface[drawLevel].surface[cnt].xPos = xPos;
worldSurface[drawLevel].surface[cnt].yPos = yPos;
worldSurface[drawLevel].counter++;
}
これは 10 個の worldSurfaces で、それぞれに 50 個のサーフェス構造体が含まれています。worldSurface[drawLevel] 内にある構造体にアクセスしたいのですが、アクセスしたいサーフェス構造体は、worldSurface の .counter 変数で認識されています。しかし、基礎となるサーフェス構造体へのアクセスはすべてセグメンテーション違反で失敗し、その理由がわかりません...
助けてくれてありがとう!