我有一个班级:
class SendData
{
public:
SendData(int SendAMsg(int foo, unsigned char *bar, int length), int number)
{
m_nDefinePos = 0;
m_nOtherStuffDefinedAs =0;
}
void somestuffhere();
void ClearDefinition();
private:
int aLotOfVariableshere;
int m_nDefinePos;
};
这是班级本身。然后有些东西叫做:
SendData* m_pData;
m_pData->ClearDefinition();
现在称之为:
void SendData::ClearDefinition()
{
printf("Welcome to Clear Definition Script\n");
m_nDefinePos = 0;
// Some more stuff here
}
这里的代码以某种方式破解。我在控制台中收到“欢迎使用清除定义脚本”消息,但这就是全部。
它在m_nDefinePos = 0;
上中断。 (我之后输入了另一个printf
命令,从未在控制台中显示过。)
我只是不知道为什么它在那里打破,我找不到任何错误。
答案 0 :(得分:1)
SendData* m_pData;
m_pData->ClearDefinition();
这声明了一个指针,但是没有创建对象或初始化指针指向任何东西,因此通过指针调用成员函数将会出错。也许你想创建一个对象:
SendData data(arguments);
data.ClearDefinition();
或者您可能想要初始化指针以指向已存在的对象:
SendData* m_pData = whatever;