4

1.だから私は持っています:

Class A;

Class B : public A;

Class C : public B;

2.タイプ B のポインターのベクトル:

vector<B*> vec;

3. 次に:

C* ptr = new C();

vec.push_back(ptr);

問題は、 std::find をこのように使用することは信頼できるでしょうか?

std::find(vec.begin(), vec.end(), prt);

また、this->ポインタを使って検索してもよろしいでしょうか?

std::find(vec.begin(), vec.end(), this); //inside of a type C object

前もって感謝します。

4

1 に答える 1

4

==はい、型階層内のオブジェクトへのポインター間に明確に定義された比較 ( ) があるため、これは安全です。基本クラス型への変換後にポインターの実際の値が異なる場合がありますが (多重継承の場合が多い)、これらのポインター間の比較で正しい結果が得られるように、ランタイムを調整する必要があります。

于 2012-08-03T10:49:14.027 に答える