创建提升共享指针的向量

Creating a vector of boost shared pointers

本文关键字:向量 指针 共享 创建      更新时间:2023-10-16

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

在我的一个班级(例如 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>

等等

等等

谁能帮我?

提前谢谢你

begin

返回指向迭代器的指针,而是返回迭代器。

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

应该做这个伎俩。

从错误消息中可以得出结论,您基本上混合了容器:一个包含指向"类一对象"的共享指针,另一个包含"类一对象"。看起来这应该有效:

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);

此致敬意。