4
我在用下面的代碼有問題:問題的迭代器的std ::升壓名單:: shared_ptr的
#include <list>
#include <boost/shared_ptr.hpp>
#include "Protocol/IMessage.hpp"
template <typename HeaderType>
class Connection {
public:
typedef IMessage<HeaderType> MessageType;
typedef boost::shared_ptr<MessageType> MessagePointer;
template <typename Handler>
void
FlushMessageQueue(Handler handler) {
std::list<MessagePointer>::iterator ib = message_queue_.begin(); // line 69
std::list<MessagePointer>::iterator ie = message_queue_.end();
for (; ib != ie; ++ib) {
AsyncWrite(*ib, handler);
}
}
private:
std::list<MessagePointer> message_queue_;
};
GCC(4.2.1)告訴我:
include/Network/Connection.hpp: In member function 'void Network::Connection<MT>::FlushMessageQueue(Handler)':
include/Network/Connection.hpp:69: error: expected `;' before 'ib'
我想知道爲什麼我不能爲MessagePointer列表創建一個迭代器。
任何想法?
謝謝。
+1,並緩解輸入您可以將您的模板中的類型定義:'的typedef typename的標準::列表 ::迭代器MessageIterator;' –
2009-11-29 09:33:33
的確。謝謝你,先生。 – 2009-11-29 09:39:55