删除C ++类中的对象

时间:2014-09-04 09:10:37

标签: c++ class constructor destructor

我的班级有一部分用于逐字节读取数据,直到'\0'出现。

RESULT MyClass::readMethod(DataInputStream& s)    
{
    if ( condition = ok )
    {   
        char tmp[32];
        uint8 i = 0;
        do {
            tmp[i] = s.read_int8();
        } while (tmp[i++] == '\0');

        char *arr= new char[i];

        for (uint8 j = 0; j < i; ++j)
        {
            arr[j] = tmp[j];
        }
        //delete[] arr;
    }
}

我为这篇文章删除了很多代码,因为休息不太重要 我的问题是,我想释放记忆,但因为我有方法:

我试过把它放到析构函数中:

MyClass::~MyClass()
{
    delete [] arr;
}

但编译器(我使用Visual Studio 2010)强调它并说:"Error: identifier arr is undefined".
我无法在评论的地方使用它,因为我有以下方法:

char * getArr()
{
    return arr;
}

但是,如果我可以在课外访问arr,我不知道它是否会起作用。我还在学习C ++和OOP,有时候我很困惑 类似的问题在于构造函数:如何将arr初始化为空。

1 个答案:

答案 0 :(得分:0)

你的arr是readMethod的本地人。所以析构函数不知道它。你必须将arr声明为类成员。

class MyClass
{

  private:
     char* arr;
}

然后你可以在你的析构函数中删除它。