我有一个名为“ StatusInformation”的类,我想在其中将变量_status设置为true / false,但是我仅收到“ segmentation fault”。我认为_status不存在,因为我是从另一个类中调用它的。有人知道如何防止此错误吗?
StatusInformation.cpp
void StatusInformation::SetClientConnectStatus(bool status)
{
_status = status;
}
StatusInformation.h
class StatusInformation
{
private:
bool _status = false;
public:
void SetClientConnectStatus(bool status);
};
CallerClass.cpp
_statusInformation = new StatusInformation();
_statusInformation->SetClientConnectStatus(true);
CallerClass.h
StatusInformation *_statusInformation;
最佳答案
编辑:该链接到您的代码只是给我缺少ArduinoProtocol的代码。
对我来说,这会编译出2条有关非静态数据成员初始化器的警告,然后运行正常。我真的不相信细分错误可能来自此代码。唯一可能导致这种情况的原因是
_statusInformation = new StatusInformation();
失败并返回0,使您的指针成为NULL指针。原因:
_statusInformation->SetClientConnectStatus(true);
等同于:
NULL->SetClientConnectStatus(true);
但这只有在您选择使用不罚球的情况下才会发生。您要特别指定。因此,实际上,该代码中唯一可能导致分段错误的事情是不会发生的。最坏的情况是将抛出std :: bad_alloc。