我有這個,在我的頭:段錯誤 - 改變結構變量(另一種結構的內)
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;
我然後初始化worldSurface中的.cpp:
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個世界表面,每個表面都包含50個表面結構,我想要訪問位於worldSurface [drawLevel]中的結構,並且我想訪問的表面結構在worldSurface中,在.counter變量中是已知的。但所有的底層表面結構的通路都會因分段故障而失敗,並且我不知道爲什麼...
感謝您的幫助!
您嘗試過自動在世界表面結構中自動分配曲面嗎?沒有看到任何推理,使動態分配,只需使用表面[MAX_SURFACES] –
Surface * surface = new Surface [MAX_SURFACES];這不會編譯如果在結構中定義 – Matt
修復它!不知道爲什麼,但非常感謝男人!我現在需要睡覺,如果你可以留下一個簡短的解釋,爲什麼,將不勝感激。 :) – GigaBass