مشكلة مع المكررات للالأمراض المنقولة جنسيا :: قائمة دفعة :: shared_ptr

StackOverflow https://stackoverflow.com/questions/1815075

سؤال

وأواجه مشكلة مع التعليمات البرمجية التالية:

#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_;
};

ودول مجلس التعاون الخليجي (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.

وأي أفكار؟

وشكرا لكم.

هل كانت مفيدة؟

المحلول

وstd::list<MessagePointer> في التعليمات البرمجية هو نوع يعتمد (أي أنها تعتمد على نوع من حجة قالب). ونتيجة لذلك، تحتاج إلى استخدام typename القول أنه من المتوقع أن يكون نوع لجميع التجسيدات المحتملة ::iterator (لأنها يمكن أن تكون قيمة بالنسبة للبعض منهم، إذا كانت متخصص). لذلك:

typename std::list<MessagePointer>::iterator ib = message_queue_.begin();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top