当我试图从类函数中访问一个类成员(它是一个结构)时,我遇到了一个分段错误的问题。我想我在某处声明这是错误的,但我看不出问题出在哪里。我试过很多变种,但到目前为止都没有运气。如有任何帮助,我们将不胜感激。
程序。h:
struct ButtonState {
int analog_pin;
};
class LEDGarden {
public:
ButtonState *the_state;
LEDGarden(void) {}
void init(void);
void initButtons(void);
};
program.cpp:
#include "program.h"
void LEDGarden::init(void) {
ButtonState *the_state = new ButtonState();
the_state->analog_pin = 5;
initButtons();
}
void LEDGarden::initButtons(void) {
// The problem happens here.
the_state->analog_pin = 5;
}
int main() {
LEDGarden garden;
garden.init();
}
当我试图在函数
注意,当我使用gcc时,只要不使用
您的
void LEDGarden::init(void) {
this->the_state = new ButtonState();
the_state->analog_pin = 5;
initButtons();
}
您可能应该做的是去掉
不同的行为可能取决于成员变量被设置为null或随机内存位置(可能是“好”或“坏”,但绝不是“正确”-)