В настоящее время я получаю удовольствие, пытаясь узнать некоторые из книг Boost. В настоящее время я делаю то, что, как я думаю, станет будущим домашним проектом (семестр еще не начался). Однако этот вопрос касается не проблемы с домашней работой, но и о Boost.Boost FOR_EACH Over A Ptr_Vector?
Код:
/* 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 как-то скрывает указатель от метода Еогеасп.
Если я вместо этого написать
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/. –