c++ - const and overloading operator -
i have generic map object. want overload operator[] map[key] return key's value. made 2 versions of subscript operator.
non-const:
valuetype& operator[](keytype key){ const:
const valuetype& operator[]( keytype& key) const{ the non-const versions works fine when create const map have problem. write in main:
const intmap map5(17); map5[8]; and these errors:
ambiguous overload 'operator[]' (operand types 'const intmap {aka const mtm::mtmmap<int, int>}' , 'int') invalid initialization of non-const reference of type 'int&' rvalue of type 'int'
the error message ambiguity reflects compiler considering both of operator[]() possible candidates match map5[8]. both candidates equally (or bad, depending on how @ it).
the non-const version invalid because map5 const.
the const version requires initialising non-const reference keytype rvalue (the literal 8) invalid. error messages, keytype int.
either remove & keytype argument of const version, or make argument const.
Comments
Post a Comment