升压访问派生对象:: ptr_vector

我使用一个boost :: ptr_vector <A级>,这也是我用它来存储B类对象:公共类答:我希望能够访问向量中的B类对象; 我怎么投以访问?

--------------解决方案-------------

理想情况下, 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容器中的元素(并跳过任何非B单元),就可以做到这一点很容易使用Boost的组合transform_iterator (每个转换A&一个B&filter_iterator (跳过在任何非B容器中的元素)。

分类:C# 时间:2015-03-15 人气:0
本文关键词: 升压,PTR矢量
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.270 (s). 10 q(s)