创建boost共享指针的向量

时间:2012-05-08 07:47:56

标签: c++ boost shared-ptr

我遇到了一个问题,想知道是否有人可以帮助我。

在我的一个班级(例如class1)中,我有一个

typedef boost::shared_ptr <class-one-object>

typedef std::vector<class-one-object>

在另一个类(例如class2)中,我需要再次创建一个这样的向量,以便迭代这个

class-one-object

所以我正在尝试以下

class1::ImportTableObject& table = configPtr->getTable();    
std::vector<class1::class-one-object>::const_iterator* iter = table.begin();

这引发了以下编译错误:

cannot convret `__gnu_cxx::__normal_iterator<boost::shared_ptr<class1::class-one-object>*, std::vector<boost::shared_ptr<class1::class-one-object>,
 std::alloctor<boost::shared_ptr<class1::class-one-object> > > to '__gnu_cxx::__normal_iterator<const class1::class-one-object*, std::vector<class1::class-one-object>

等等

有人可以帮我吗?

提前谢谢

2 个答案:

答案 0 :(得分:5)

begin不返回指向迭代器的指针,它返回一个迭代器。

std::vector<class1::class-one-object>::const_iterator iter = table.begin()

应该这样做。

答案 1 :(得分:1)

从错误消息可以得出结论,你基本上混合容器:一个包含“class-one-object”的共享指针,另一个包含“class-one-object”。看起来这应该有效:

std::vector<boost::shared_ptr<class1::class-one-object> >::const_iterator iter = table.begin();

但你可能希望实现这样的目标:

std::vector<class1::class-one-object> vec;
const class1::class-one-object* ptr = (*iter).get();
if (ptr)
    vec.push_back(*ptr);

最好的问候。