0

クラス B のオブジェクトを格納するためにも使用する boost::ptr_vector < class A > を使用しています: public class A. ベクトル内のクラス B オブジェクトにアクセスできるようにしたいです。キャストしてアクセスするにはどうすればよいですか?

4

1 に答える 1

0

理想的には、必要なA部分にアクセスできる仮想インターフェイスを提供するB必要があります。B実際のオブジェクトにアクセスする必要がある場合dynamic_castは、反復子によって生成されたコンテナーへの参照に対して使用する必要があります (反復子が実際にオブジェクト static_castを指していることを確実に知っている場合は使用できます)。B

// Create a container and insert a new element into it:
boost::ptr_vector<A> s;
s.push_back(new B());

// Get a reference to that element we just inserted:
B& b_ref = dynamic_cast<B&>(*s.begin());

Bコンテナー内のすべての要素を反復処理する(および非要素をスキップする) 場合は、Boost の(それぞれを に変換する) と(非要素をスキップする)Bの組み合わせを使用して、かなり簡単に行うことができます。コンテナ)。transform_iteratorA&B&filter_iteratorB

于 2011-04-30T00:02:07.800 に答える