do not use operator []. Use iterators instead to work with std::list.
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Wed, 27 Feb 2008 19:36:03 +0100
changeset 2497 9dfbcd50df64
parent 2496 e91c92db28c0
child 2498 e01570293b98
do not use operator []. Use iterators instead to work with std::list.
src/core/object-vector.h
--- a/src/core/object-vector.h	Wed Feb 27 19:35:37 2008 +0100
+++ b/src/core/object-vector.h	Wed Feb 27 19:36:03 2008 +0100
@@ -93,7 +93,20 @@
     }
     virtual Ptr<Object> DoGet (const ObjectBase *object, uint32_t i) const {
       const T *obj = static_cast<const T *> (object);
-      return (obj->*m_memberVector)[i];
+      typename U::const_iterator begin = (obj->*m_memberVector).begin ();
+      typename U::const_iterator end = (obj->*m_memberVector).end ();
+      uint32_t k = 0;
+      for (typename U::const_iterator j = begin; j != end; j++, k++)
+	{
+	  if (k == i)
+	    {
+	      return *j;
+	      break;
+	    }
+	}
+      NS_ASSERT (false);
+      // quiet compiler.
+      return 0;
     }
     U T::*m_memberVector;
   } *spec = new MemberStdContainer ();