1

opendir(dir *を返す)でディレクトリを開いており、オブジェクト内で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 に答える