阻止函数返回指针超出范围?

时间:2012-07-04 00:06:38

标签: c++

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

我的问题是,如何保留目录引用,以便我的类可以反复使用它而不必每次都重新打开它?我曾尝试将其复制到DIR类型,但我得到的投诉是DIR没有完全定义。我怀疑即使我能弄明白DIR的定义,它仍会有一个复制构造函数。必须有另一种方法来保持它的范围吗?

1 个答案:

答案 0 :(得分:0)

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

Object *objMemberPointer;

Constructor()
{
    Object obj;
    objMemberPointer = &obj;
} <- obj goes out of scope here and deallocates your object.