Пустая структура в C против пустой структуры в C ++ - PullRequest
7 голосов
/ 19 марта 2011

Почему пустая структура в C является нарушением ограничения? Почему это правило меняется в C ++?

Есть ли исторические причины?

Ответы [ 2 ]

8 голосов
/ 19 марта 2011

, поскольку у вас нет наследования в C, они вам не нужны.Если вы просто хотите иметь различимый тип указателя, вы можете использовать указатели на неполные типы.

struct opaque;

struct opaque* stranger = 0;

должно работать нормально.

3 голосов
/ 19 марта 2011

Я предполагаю, что это:

В C нет наследования, шаблонов и перегрузки функций - три основные причины, по которым мы используем пустые структуры в C ++ - в качестве базового интерфейса, в качестве параметра шаблона, так кактип, чтобы помочь разрешению перегрузки.

Можете ли вы подумать о реальном использовании пустой структуры в C?

...