Название: typedef и предварительное описание Отправлено: Igors от Сентябрь 13, 2011, 16:54 Добрый день
Пример: есть какие-то сторонние исходники (напр API) с самыми обычными описаниями Код Теперь мне понадобилось усовершенствовать класс Point. Написал свой класс Код Но по каким-то (мне непонятным причинам) это не сбивается с предварительным описанием (struct Point), говорит, мол, смотрите, Point oбъявлен как (и показывает на мой typedef). Почему, ведь typedef не создает новых типов? Спасибо Название: Re: typedef и предварительное описание Отправлено: vincent от Сентябрь 14, 2011, 10:32 typedef не создает новых типов это точно, но он определяет альтернативное имя для существующего типа. Чего собственно у вас не получается - вы пытаетесь и альтернативное имя создать и в тоже время определить ему иной тип.
И, кстати, Point в приведенном примере не класс, а структура. Название: Re: typedef и предварительное описание Отправлено: Пантер от Сентябрь 14, 2011, 10:38 И, кстати, Point в приведенном примере не класс, а структура. В с++ структура == класс.Название: Re: typedef и предварительное описание Отправлено: Igors от Сентябрь 14, 2011, 11:01 typedef не создает новых типов это точно, но он определяет альтернативное имя для существующего типа. Чего собственно у вас не получается - вы пытаетесь и альтернативное имя создать и в тоже время определить ему иной тип. Почему же "иной" - ведь Point и MyPoint синонимыНазвание: Re: typedef и предварительное описание Отправлено: vincent от Сентябрь 14, 2011, 12:35 Вы полностью текст ошибки приведите.
Название: Re: typedef и предварительное описание Отправлено: shirushizo от Сентябрь 14, 2011, 12:40 И, кстати, Point в приведенном примере не класс, а структура. В с++ структура == класс.Название: Re: typedef и предварительное описание Отправлено: Пантер от Сентябрь 14, 2011, 12:41 Остальных нет. Только этим и отличаются.
Название: Re: typedef и предварительное описание Отправлено: slim от Сентябрь 14, 2011, 13:46 Остальных нет. Только этим и отличаются. вообщето не только этим.. еще при наследование, у классов по умолчанию приват наследование, у структур паблик.. Название: Re: typedef и предварительное описание Отправлено: Wlad_C от Сентябрь 14, 2011, 14:26 Цитировать Но по каким-то (мне непонятным причинам) это не сбивается с предварительным описанием (struct Point), говорит, мол, смотрите, Point oбъявлен как (и показывает на мой typedef). Почему, ведь typedef не создает новых типов? У Вас уже есть тип данных по названием Point. Вы создаете новый тип данных с названием MyPoint, Создаете ему псевдоним - Point. А теперь скажите: когда Вы в программе укажите имя Point, к какй тип данных должен взять компилятор - Point или MyPoint ? Поэтому компилятор и сообщает об ошике! Название: Re: typedef и предварительное описание Отправлено: Igors от Сентябрь 14, 2011, 15:05 У Вас уже есть тип данных по названием Point. Та откуда он там есть ? :)В аттаче микро-пример который нормально компилится - но только если в main.h я включаю include "Point.h". Но если вместо этого запишу struct Point., то получаю Цитировать /Users/../Point.h:8:0 /Users/../Point.h:8: error: conflicting declaration 'typedef struct MyPoint Point' /Users/../main.h:5:0 /Users/../main.h:5: error: 'struct Point' has a previous declaration as 'struct Point' Название: Re: typedef и предварительное описание Отправлено: Igors от Сентябрь 14, 2011, 15:20 Ага, предварительное описание использовать можно, но надо писать
Код При этом о MyPoint ничего больше неизвестно (в хедере). Хммм... а ведь я часто видел это в хедерах SDK |