我正在用opendir(返回dir *)打开一个目录,并希望在我的对象中不断保留和重用dir。我原先在构造函数中打开了目录并将指针存储为私有变量,这显然失败了,因为只要构造函数结束指针超出范围并释放内存。
我的问题是,如何保留目录引用,以便我的类可以反复使用它而不必每次都重新打开它?我曾尝试将其复制到DIR类型,但我得到的投诉是DIR没有完全定义。我怀疑即使我能弄明白DIR的定义,它仍会有一个复制构造函数。必须有另一种方法来保持它的范围吗?
答案 0 :(得分:0)
对象在C ++中超出范围的唯一方法是将其作为局部变量。我猜你会做这样的事情:
Object *objMemberPointer;
Constructor()
{
Object obj;
objMemberPointer = &obj;
} <- obj goes out of scope here and deallocates your object.