Цитата(prottoss @ Sep 20 2005, 22:26)
Кто нибудь знает как перегрузить оператор -> в IAR?
struct U_Type
{ char a, b
U_type *operator->() const { return this;}
}
На такую запись он ругается что надо ставить точку с запятой между оператор и ->. На другие варианты тоже. Запись по идее не перегружает оператор, а дублирует то что есть без перегрузки. Но в скобках можно написать что угодно... Кто нибудь использовал перегрузку?
Во-первых, после b надо ставить ;.
Во-вторых, оператор возвращает неизвестный тип: U_Type и U_type - это два разных типа.
В-третьих, в конце определения типа надо тоже ставить ;.
В-четвертых, функция объявлена как константная, и возвращаемое значение - не констатнта. Надо либо убрать const из определения функции, либо тип возврата квалифицировать словом const. В итоге код, приведенный ниже:
Код
struct U_Type
{
char a, b;
const U_Type *operator->() const { return this;}
};
Вполне успешно компилируется.
Выводы: внимательнее надо быть, раз, и язык немножко подучить, два.