クラス B のオブジェクトを格納するためにも使用する boost::ptr_vector < class A > を使用しています: public class A. ベクトル内のクラス B オブジェクトにアクセスできるようにしたいです。キャストしてアクセスするにはどうすればよいですか?
質問する
739 次
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_iterator
A&
B&
filter_iterator
B
于 2011-04-30T00:02:07.800 に答える