我正在做一个C++项目,一个非常简单的视频游戏。这个游戏必须有无限的关卡,每个关卡都有随机数量的平台。 我为平台创建了一个对象,这里是 hpp:
class platform {
protected:
hitBox box;
public:
platform (int a, int b, int c, int d);
void print();
hitBox getHitbox();
};
还有一个关卡对象,其中包含平台列表,因为每个关卡的平台数量都可能发生变化,这里是 hpp:
struct Pplatform {
platform* plat;
Pplatform* next;
};
typedef Pplatform* lPlatform;
hitBox newRandomPlat (hitBox where);
class level {
protected:
int nlevel;
lPlatform platforms;
public:
level (int nl, bulletManager* bM);
void print_platforms ();
infoCrash check (hitBox ht, char d);
int lnumber ();
};
但是在 level.cpp 中,当我在列表中创建平台对象时,出现分段错误错误:
this->platforms->plat = new platform (0, 1, COLS, 0);
这行给了我分段错误,我尝试以不同的方式编写它,如下所示:
platform plt = platform (0, 1, COLS, 0);
this->platforms->plat = &plt ;
但它不起作用。你能帮我吗?谢谢
您遇到的分段问题很可能是由于访问未正确分配的内存引起的。您尝试在代码中为 this->platforms->plat 设置一个值,但似乎尚未为 this->platforms 分配内存。 您可以尝试使用平台成员的关卡构造函数的修改代码:
level::level(int nl,bulletManager * bM):nlevel(nl),平台(nullptr){
} 当您构建新平台时,必须为其动态分配内存并更新平台列表。