Я получаю segfault при вызове функции-члена класса из другой его функции-члена. Вот упрощенная версия:
struct X {
// data members, constructor here
float g() {
// some math here
return result;
}
float f() {
return g() + 1;
}
}
По какой-то причине, когда f вызывает g, я получаю segfault, а g даже не выполняется. Однако странным решением является приведение this
к его типу и разыменованию и его использование. Что-то вроде:
struct X {
// same old stuff
float f() {
X th_is = *((X *)this);
return th_is.g() + 1;
}
По какой-то причине это работает. Очевидно, я опускаю фон для рабочего примера, так как система очень сложна, и эта ошибка может быть вызвана несколькими факторами ...
Что я могу сделать из того факта, что первый не работает, а второй работает?
Обратите внимание, что все остальные методы можно вызывать сами по себе. Просто когда один вызывает другого, я получаю ошибку сегментации.