BOOST_FOREACH与不可复制对象的ptr_vector

时间:2013-01-25 17:39:18

标签: boost-foreach

我有以下内容:

class X : public boost::noncopyable
{...};

class Y 
{
   public:
      const boost::ptr_vector<X>& getXs() const;
   private:
      boost::ptr_vector<X> m_xs;
}

int main()
{
   Y y1;
   //...

   const boost::ptr_vector<X>& mx = y1.getXx();

   BOOST_FOREACH(boost::ptr_vector<X>::value_type x, mx)
   {
       // do something with x!
   }
}

它编译但它没有链接!它说BOOST_FOREACH需要implicit default copy constructor for X

如何使用BOOST_FOREACH迭代指向X的指针...没有复制构造函数。

感谢。

1 个答案:

答案 0 :(得分:0)

尝试使用BOOST_FOREACH(),。i.e。

中的引用
BOOST_FOREACH(boost::ptr_vector<X>::value_type &x, mx)
{
    // do something with x!
}