簡體   English   中英

創建向量的Boost共享指針

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM