[英]Creating a vector of boost shared pointers
我遇到了問題,想知道是否有人可以幫助我。
在我的一個班級(例如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);
最好的祝福。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.