#include <iostream>
using namespace std;
float* a_predefined_2d_array = nullptr;
class Level {
private:
int size;
float** a_predefined_2d_array;
public:
int GetSize();
int SetSize(int);
int DoSomething();
int Load(string, int);
};
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!!!
}
int main() {
Level l{};
l.DoSomething();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKZmxvYXQqIGFfcHJlZGVmaW5lZF8yZF9hcnJheSA9IG51bGxwdHI7CgpjbGFzcyBMZXZlbCB7CnByaXZhdGU6CiAgICBpbnQgc2l6ZTsKICAgIGZsb2F0KiogYV9wcmVkZWZpbmVkXzJkX2FycmF5OwpwdWJsaWM6CiAgICBpbnQgR2V0U2l6ZSgpOwogICAgaW50IFNldFNpemUoaW50KTsKICAgIGludCBEb1NvbWV0aGluZygpOwogICAgaW50IExvYWQoc3RyaW5nLCBpbnQpOwoKfTsKCmludCBMZXZlbDo6R2V0U2l6ZSgpIHsKICAgcmV0dXJuIHNpemU7Cn0KCmludCBMZXZlbDo6U2V0U2l6ZShpbnQgX3NpemUpIHsKICAgc2l6ZSA9IF9zaXplOwp9CgppbnQgTGV2ZWw6OkxvYWQoc3RyaW5nIHN0ciwgaW50IF9zaXplKSB7CiAgIFNldFNpemUoX3NpemUpOyAgICAgICAgICAgICAvL3dvcmtzIGZpbmUhCiAgIGNvdXQ8PEdldFNpemUoKTw8ZW5kbDsgICAgICAvL3dvcmtzIGZpbmUhCiAgIC8vYmFzaWNhbGx5IGxvYWRzIGV2ZXJ5dGhpbmcgdG8gaW5pdGlsaWF6ZSB0aGUgcHJvZ3JhbS4gVGhlIHBvaW50IGlzIHRoYXQgdGhlIGFib3ZlIGNhbGxzIHdvcmsgZmluZSEKfQoKLy9UaGUgcHJvYmxlbSBpcyBoZXJlISEhCmludCBMZXZlbDo6RG9Tb21ldGhpbmcoKSB7CiAgIGFfcHJlZGVmaW5lZF8yZF9hcnJheSA9IG5ldyBmbG9hdCpbR2V0U2l6ZSgpXTsgLy9TRUcgRkFVTFRTISEhCiAgIGNvdXQ8PCJzaXplID0gIjw8R2V0U2l6ZSgpPDxlbmRsOyAvL1NFRyBGQVVMVFMhISEKfQoKaW50IG1haW4oKSB7CglMZXZlbCBse307CgkKCWwuRG9Tb21ldGhpbmcoKTsKCQoJcmV0dXJuIDA7Cn0=