Что такое C ++ эквивалент Objective C "@class MyClassName"? - PullRequest
3 голосов
/ 09 января 2012

В заголовках моих классов Objective C я использую @class MyClassName, чтобы иметь возможность использовать объект MyClassName в определенном классе.

В Objective C есть разница между @class MyClassName и #import MyClassName.h?

Существует ли такая разница в C ++?

Эквивалент C ++ #import "MyClassName.h" равен #include "MyClassName.h".

Что такое эквивалент C ++ дляОбъектив-C @class MyClassName?

Ответы [ 3 ]

8 голосов
/ 09 января 2012

Объявление вперед в c ++ выглядит аналогично - просто удалите '@' из варианта obj-c:

class MyClassName;
1 голос
/ 09 января 2012

С ++ эквивалент #import "MyClassName.h "не #include "MyClassName.h"

" # import "также предотвращает циклическое включение файлов, для которых в c ++ мы обычно делаем

#ifdef __abc.h__
#define __abc.h__

//actual code


#endif
1 голос
/ 09 января 2012

да, в C ++ такое различие тоже есть. В C ++ это называется предварительным объявлением. Вы ожидаете объявить класс как:

class ClassName;

Просто чтобы добавить дополнительную информацию, предварительное объявление используется, когда вы используете класс перед его объявлением. Компилятор будет немного снисходительным и не выдаст ошибку, но он все еще нуждается в полном объявлении класса позже.

...