2

我有以下内容:

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!
   }
}

它编译但它不链接!它说这implicit default copy constructor for X是 BOOST_FOREACH 需要的。

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

谢谢。

4

1 回答 1

0

Try using references in BOOST_FOREACH(), .i.e.

BOOST_FOREACH(boost::ptr_vector<X>::value_type &x, mx)
{
    // do something with x!
}
于 2013-01-25T18:07:05.317 回答