0

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

在我的一堂课(例如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>

等等等等

任何人都可以帮助我吗?

先感谢您

4

2 回答 2

5

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

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

应该做的伎俩。

于 2012-05-08T07:50:26.290 回答
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);

最好的祝福。

于 2012-05-08T13:26:10.793 回答