gpt4 book ai didi

c++ - 如果带有类指针的语句导致段错误

转载 作者:搜寻专家 更新时间:2023-10-31 00:31:55 25 4
gpt4 key购买 nike

我已经为我正在处理的一个小 C++ 项目制作了一个有限状态机类,但由于某种原因,该程序一到达某个 if 语句就会出现段错误。

这是类本身:

class FiniteStateMachine
{
protected:
void cleanup();

State* state_;

public:
FiniteStateMachine();
FiniteStateMachine( State* const state );
~FiniteStateMachine();

void changeState();
void forceState( State* const state );
char const* getStateName();

};

在定义中,程序一到达条件语句就会出现段错误:

void FiniteStateMachine::changeState()
{
debugging("FiniteStateMachine::changestate() called");

if( state_ ) // problem point
{
debugging("state_ is not nullptr");
// state_.handle();
}
else
{
debugging("state_ is nullptr");
}
}

debugging() 只是一个用于在 Debug模式下将消息显示到标准输出的函数。对我来说最奇怪的是 if( state_ ) 在程序中的较早部分使用得很顺利。

我使用的是 gcc 4.9.2 版、Linux Mint 17.2 和 C++11

如果您需要更多详细信息,here is the link to the github repository.

最佳答案

问题的根源是您的 Engine::getInstance 方法有错误。

Engine* Engine::getInstance()
{
Engine* instance = instance_;

if( !instance_ )
{
instance_ = new Engine;
}

return instance;
}

第一次调用此方法时,您将始终返回 null。您应该删除本地 Engine 变量并只使用 instance_ 成员。

Engine* Engine::getInstance()
{
if( !instance_ )
{
instance_ = new Engine;
}

return instance_;
}

这应该修复导致 if 语句崩溃的空指针

关于c++ - 如果带有类指针的语句导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32699477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com