| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Поиск имен для объявлений членов класса |
| Автор: zim22 10.3.2009, 16:33 | ||
| В нижеприведенном примере тип переменной Money bal согласно книжке(цитаты из неё ниже привожу) должен быть double. Но он int. Как это объяснить? Name Lookup for Class Member Declarations Names used in the declarations of a class member are resolved as follows:
Перевод из русского издания книги: Поиск имён для объявлений членов класса. Поиск имён, используемых в объявлениях членов класса, осуществляется в следующем порядке.
|
| Автор: andrew_121 10.3.2009, 16:36 |
| Автор: zim22 10.3.2009, 16:42 |
| а это понимать так, что, согласно книге, повторный typedef приведёт к ошибке // error: cannot change meaning of Money и опять же, согласно книге, поиск имени Money компилятор ищет от точки объявления и выше. но никак не ниже. читайте второй пункт списка. |
| Автор: C/L 10.3.2009, 16:49 |
А зачем все это нужно? Если все равно ошибка будет! Получается здесь два Money - один как тип переменной bal, другой что возвращает balance |
| Автор: mes 10.3.2009, 16:55 |
| перенесите 7ю строку (typedef ..) выше первого определения Money , иначе когда компилятор доходит до нее возникает коллизия типов. |
| Автор: andrew_121 10.3.2009, 16:57 |
| zim22, Я не в курсе что там в твоей книжке написано, но мне кажется что компилятор правильно поступил. |
| Автор: Fazil6 10.3.2009, 17:18 |
| scope разный у тайпдефов. Причем реально Money balance() возвращает double, а Money bal реально int Перенеси первый тайпдеф в класс и тогда получишь ошибку. А так не вижу особых проблем. По книге написано, что ищется выше - оно и ищется выше. |
| Автор: zim22 10.3.2009, 17:23 |
| спасибо, разобрался |