Зарезервированное имя класса Visual C ++ - PullRequest
5 голосов
/ 24 августа 2010

Я хочу создать в своем проекте класс "Screen", "Graphics", "Font" и "Environment", но когда я набираю эти имена и нажимаю enter, я получаю сообщение: "Screen" - это зарезервированное имя класса или "Environment" "зарезервированное имя класса. Я не хочу делать CScreen или ScreenC или что-то в этом роде: / У меня есть Visual Stuido 2010. Есть ли способ это исправить?

Ответы [ 6 ]

9 голосов
/ 24 августа 2010

Я думаю, что использование пространства имен - это ответ.

4 голосов
/ 05 июля 2011

Это ошибка в Visual Studio.Существует ряд имен, которые продукт Microsoft VS 2010 считает зарезервированными, потому что другие продукты Microsoft используют это имя.Однако вы, очевидно, не обязаны использовать эти другие продукты Microsoft, и, поскольку они не являются зарезервированными именами c ++, это ошибка и ее следует исправить.Он должен сообщать об этом только как конфликт имен, когда вы включаете что-то, что уже использует имя.Я также видел, как компилятор делал это для «Модуля» в чистом проекте c ++ (без MFC, ATL и т. Д.).

Тем временем, используйте опцию Add New Item и создайте заголовок и реализацию с помощьюрука.Другие упоминали, что имена важны, и это правда, но я не могу понять, почему они используют это, чтобы отговорить вас от использования таких имен, как «Экран», «Графика», «Шрифт» и т. Д. Хорошие имена должны быть простыми в использовании, и они достаточно наглядны.,Определенно, не пытайтесь скрыть смысл, ища необычные слова в тезаурусе.Также не пытайтесь добавлять префиксы к именам классов - пространства имен являются подходящим инструментом, когда вы создаете библиотеку, которая будет использоваться другими.Префиксы были старым инструментом, который использовался 15 лет назад, когда пространства имен еще не были добавлены к языку.

2 голосов
/ 17 марта 2013

Как уже упоминалось, Visual Studio запрещает вам использовать имя без всякой уважительной причины.

Самый простой способ обойти это ограничение, при этом используя «Add -> Class».. "Диалог для

  1. Введите немного другое имя класса в поле" Имя класса: "(скажем" Screen_ "вместо" Screen ")
  2. Вручную отредактируйте имяфайлы в разделах «.h file:» и «.cpp file:» в диалоговом окне, чтобы они были Screen.h и Screen.cpp
  3. Нажмите «Готово», чтобы создать файлы классов (имена файлов будутправильно, но фактический класс будет Screen _)
  4. Вручную отредактируйте текст в файлах, чтобы изменить «Screen_» на «Screen»
1 голос
/ 24 августа 2010

Что вы подразумеваете под "Я набираю эти имена и нажимаю ввод"? Это сообщение Class Wizard? В этом случае просто создайте файлы h и cpp вручную. Я не знаю ни одной функции C ++, которая не позволяет использовать эти имена для класса. Конечно, в случае конфликта имен используйте пространство имен.

0 голосов
/ 24 августа 2010

Я нахожу решение: я могу добавить отдельно Graphics.cpp и Graphics.h, Environment.cpp и .. etc: / Но я все еще не знаю, почему я не могу использовать «добавить класс»: /

0 голосов
/ 24 августа 2010

Вам либо не нужно полностью вводить #include эти классы в свой проект, либо создать пространство имен для своих классов, а затем использовать это пространство имен, когда вам нужно разрешить.

Если вы хотите, чтобы другие программисты использовали ваш код, они могут запутаться из-за того, что вы повторно используете имена классов, которые они уже знают, поэтому было бы лучше придумать префикс для ваших классов, возможно, обозначающий имя проекта.

...