Статья:
Проблемы взаимодействия кода на языках C/C++/Objective-CАвтор(ы): Конева Анна Александровна
Дата: 10.10.2013
Данная статья посвящена проблемам взаимодействия кода на языках C/C++/Objective-C. Здесь охватываются различные темы – и объектно-оринтированного программирования, и процедурного, такие возможности Objective-C, как блоки, и аналогичные возможности C++11 – лямбды, а также некоторые нюансы стандарта C99.
Авторы:
Конева Анна Александровна
Аннотация:
Данная статья посвящена проблемам взаимодействия кода на языках C/C++/Objective-C. Здесь охватываются различные темы – и объектно-оринтированного программирования, и процедурного, такие возможности Objective-C, как блоки, и аналогичные возможности C++11 – лямбды, а также некоторые нюансы стандарта C99.
Здравствуйте, Конева Анна Александровна, Вы писали:
КАА>Статья:
КАА>Проблемы взаимодействия кода на языках C/C++/Objective-CАвтор(ы): Конева Анна Александровна
Дата: 10.10.2013
Данная статья посвящена проблемам взаимодействия кода на языках C/C++/Objective-C. Здесь охватываются различные темы – и объектно-оринтированного программирования, и процедурного, такие возможности Objective-C, как блоки, и аналогичные возможности C++11 – лямбды, а также некоторые нюансы стандарта C99.
КАА>Авторы:
КАА> Конева Анна Александровна
КАА>Аннотация:
КАА>Данная статья посвящена проблемам взаимодействия кода на языках C/C++/Objective-C. Здесь охватываются различные темы – и объектно-оринтированного программирования, и процедурного, такие возможности Objective-C, как блоки, и аналогичные возможности C++11 – лямбды, а также некоторые нюансы стандарта C99.
КАА> // Какой должен быть синтаксис вызова CppClass::CppClass(5, "hello") для
КАА> // _cppClass?
КАА>Как бы мы ни пытались его вызвать, будут ошибки компиляции.
Насколько я понимаю, для этого есть placement new. Но предпочтительнее непрозрачный указатель, не CppClass *, а void *, из соображений, чтобы заголовочный файл мог читаться простым Objective C компилятором. Последний раз, когда я разбирался с Objective-C, я видел, что
он довольно гибок по части добавления селекторов, но жёсток по части добавления полей, любое изменение полей может сломать отнаследованные классы, особенно, изменение длины экземпляра. В моей Mac OS X 10.4 для этого много, где видел void * private, через который можно добавлять свои поля, не боясь поломать наследников. Не думаю, что в современном Objective-C это изменилось.