Getter 返回段错误
Getter returning SegFault
想象一下 level.hh 文件中的这个:
Class Level {
private:
int size;
float** a_predefined_2d_array;
public:
int GetSize();
int SetSize(int);
int DoSomething();
int Load(string, int);
};
想象一下在 level.cc 文件中:
int Level::GetSize() {
return size;
}
int Level::SetSize(int _size) {
size = _size
}
int Level::Load(string str, int _size) {
SetSize(_size); //works fine!
cout<<GetSize()<<endl; //works fine!
//basically loads everything to initiliaze the program. The point is that the above calls work fine!
}
//The problem is here!!!
int Level::DoSomething() {
a_predefined_2d_array = new float*[GetSize()]; //SEG FAULTS!!!
cout<<"size = "<<GetSize()<<endl; //SEG FAULTS!!!
}
为什么 GetSize() 方法会出现段错误?!不使用相同 class 的其他方法是没有任何意义的。
如果需要,我还可以为 Github 上的真实项目提供 link。但我还不想说到那个地步。
有没有人遇到过同样的问题?这不是定义错误或其他任何问题,因为我在 Load() 方法上对其进行了测试。
如果在调用 DoSomething()
之前为 size
赋值,则不会出现段错误。
Here 是一个在 GCC 上编译和运行的最小更改(包括简单的零初始化)的示例。
Level l{};
l.DoSomething();
想象一下 level.hh 文件中的这个:
Class Level {
private:
int size;
float** a_predefined_2d_array;
public:
int GetSize();
int SetSize(int);
int DoSomething();
int Load(string, int);
};
想象一下在 level.cc 文件中:
int Level::GetSize() {
return size;
}
int Level::SetSize(int _size) {
size = _size
}
int Level::Load(string str, int _size) {
SetSize(_size); //works fine!
cout<<GetSize()<<endl; //works fine!
//basically loads everything to initiliaze the program. The point is that the above calls work fine!
}
//The problem is here!!!
int Level::DoSomething() {
a_predefined_2d_array = new float*[GetSize()]; //SEG FAULTS!!!
cout<<"size = "<<GetSize()<<endl; //SEG FAULTS!!!
}
为什么 GetSize() 方法会出现段错误?!不使用相同 class 的其他方法是没有任何意义的。 如果需要,我还可以为 Github 上的真实项目提供 link。但我还不想说到那个地步。
有没有人遇到过同样的问题?这不是定义错误或其他任何问题,因为我在 Load() 方法上对其进行了测试。
如果在调用 DoSomething()
之前为 size
赋值,则不会出现段错误。
Here 是一个在 GCC 上编译和运行的最小更改(包括简单的零初始化)的示例。
Level l{};
l.DoSomething();