1

我正在使用 opendir(它返回 dir *)打开一个目录,并希望在我的对象中不断地保留和重用该目录。我最初在我的构造函数中打开了目录并将指针存储为私有变量,这显然失败了,因为一旦构造函数结束,指针就超出了范围并且内存被释放。

我的问题是,我如何保留目录引用,以便我的班级可以一遍又一遍地使用它,而无需每次都重新打开它?我尝试将其复制到 DIR 类型,但我收到了 DIR 未完全定义的投诉。我怀疑即使我能弄清楚 DIR 的定义位置,它无论如何都会有一个复制构造函数。必须有另一种方法来保持它在范围内?

4

1 回答 1

0

在 C++ 中,对象超出范围的唯一方法是使其成为局部变量。我猜你做了这样的事情:

Object *objMemberPointer;

Constructor()
{
    Object obj;
    objMemberPointer = &obj;
} <- obj goes out of scope here and deallocates your object.
于 2012-07-04T02:35:49.107 回答