overloading - C++ [] operator overload problem -
i'm still new c++ daily run new problems.
today came [] operator's turn:
i'm making myself new generic list class because don't std's one. i'm trying give warm , fuzzy of c#'s collections.generic list, want able access elements index. cut chase:
extract template:
t& operator[](int offset) { int translateval = offset - cursorpos; movecursor(translateval); return cursor->value; } const t& operator[](int offset) const { int translateval = offset - cursorpos; movecursor(translateval); return cursor->value; }
that's code operators. template uses "template", far saw on tutorials, that's correct way operator overloading.
nevertheless, when i'm trying access index, e.g.:
collections::list<int> *mylist; mylist = new collections::list<int>(); mylist->setcapacity(11); mylist->add(4); mylist->add(10); int = mylist[0];
i the
no suitable conversion function "collections::list<int>" "int" exists
error, referring "int = mylist[0]" line. "mylist[0]" type's still "collections::list", although should have been int. how come?
since mylist
pointer mylist[0]
doesn't invoke operator[]
, returns collections::list<int>*
. want (*mylist)[0]
. or better still, collections::list<int>& myref = *mylist;
, use myref[0]
(other option not allocate memory mylist
on heap, can create on stack using collections::list<int> mylist
, use .
operator on it).
Comments
Post a Comment