12

重複の可能性:
コンストラクターでこのポインターを使用するC ++

タイトルのように、次のコードのようなことをしてもいいですか?

class A;

class B {
public:
    B(A* p);
    ...
};

class A {
    B m;
public:
    A():m(this){}
    ~A(){}
};
4

1 に答える 1

11

はい、現在作成中のオブジェクトへのポインタを渡すことができます。ただし、オブジェクトはまだ完全には構築されていないことに注意する必要があります。つまり、基本的にBがそのc'torでできることは、後で使用するためにポインターを保管することです。

これがよく使用される例は、std::streamとストリームバッファです。

于 2012-08-22T10:33:29.627 に答える