我遇到了一个问题,想知道是否有人可以帮助我。
在我的一个班级(例如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>
等等
有人可以帮我吗?
提前谢谢
答案 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);
最好的问候。