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

コンパイルはできますが、リンクしません。BOOST_FOREACHimplicit default copy constructor for Xで必要とされています。

X へのポインターのみを反復処理するにはどうすればよいですか... を使用して、コピー コンストラクターはありませんBOOST_FOREACH

ありがとう。

4

1 に答える 1

0

BOOST_FOREACH()、.ieで参照を使用してみてください

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