为什么我不能在这个类中设置一个值?

时间:2013-12-12 17:18:43

标签: c++ class pointers void

我有一个班级:

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命令,从未在控制台中显示过。)

我只是不知道为什么它在那里打破,我找不到任何错误。

1 个答案:

答案 0 :(得分:1)

SendData* m_pData;
m_pData->ClearDefinition();

这声明了一个指针,但是没有创建对象或初始化指针指向任何东西,因此通过指针调用成员函数将会出错。也许你想创建一个对象:

SendData data(arguments);
data.ClearDefinition();

或者您可能想要初始化指针以指向已存在的对象:

SendData* m_pData = whatever;