我目前正在嘗試學習一些Boost庫。我目前正在做我認爲將來的家庭作業項目(學期還沒有開始)。然而,這個問題不是關於作業問題,而是關於Boost。通過Ptr_Vector提升FOR_EACH?
代碼:
/* AuctionApplication.h */
class AuctionApplication : boost::noncopyable
{
private:
boost::ptr_vector<Auction> auctions_;
boost::ptr_vector<Bidder> bidders_;
boost::ptr_vector<Bid> bids_;
/* AuctionApplication.cpp */
Bid *AuctionApplication::GetLatestBid(const Auction *auction)
{
Bid *highestBid = 0;
BOOST_FOREACH(Bid *bid, bids_) // Error here!
if (bid->GetAuction()->GetName() == auction->GetName())
highestBid = bid;
BOOST_FOREACH使用與如上述完全相同的代碼法線向量工作。因爲我已經使用ptr_vectors開始我得到的錯誤:
error C2440: '=' : cannot convert from 'Bid' to 'Bid *'
導致我相信ptr_vector某種程度上掩蓋從在foreach方法的指針。
如果我不是寫
BOOST_FOREACH(Bid *bid, bids_)
我得到的類型
error C2819: type 'Bid' does not have an overloaded member 'operator ->'
它很爛,因爲我知道出價是一個指針的四大誤區。
如何讓BOOST_FOREACH
在ptr_vectors
上正確重複?
可能與http://stackoverflow.com/questions/461507/有關。 – 2010-09-23 13:08:32