Есть ли в C ++ ключевое слово «атрибут»? - PullRequest
6 голосов
/ 13 февраля 2011

возможно я что-то упустил, но мне интересно следующее:

На страницах разработчика Mozilla о правилах кодирования я прочитал следующее:

Всякий раз, когда вы извлекаете или устанавливаете одно значение без контекста, Вы должны использовать атрибуты. Не использовать два метода, когда вы могли бы использовать один приписывать. Использование атрибутов логически соединяет получение и настройку значение, и делает скриптовый код выглядеть очиститель.

В этом примере слишком много методов:

 interface nsIFoo : nsISupports {
     long getLength();
     void setLength(in long length);
     long getColor(); 
 };

Код ниже будет генерировать точный та же сигнатура C ++, но больше скрипт удобно.

interface nsIFoo : nsISupports {
    attribute long length;
    readonly attribute long color; 
};

То, о чем я думаю, это attribute long length. Я предполагаю, что этот синтаксис автоматически создает методы получения / установки.

  • Но разве это стандарт C ++?
  • Это какой-то специфический материал для Mozilla?
  • Где это определено?

Ответы [ 3 ]

12 голосов
/ 13 февраля 2011

Mozilla использует язык под названием IDL (язык определения интерфейса) для определения интерфейсов для объектов, которые используются в многоязычных контекстах, таких как C ++ и JavaScript. Он компилируется в код на этих двух языках и, следовательно, позволяет разработчикам, работающим над проектом, иметь одно определение для своих интерфейсов на любом количестве языков, которое они хотят. Так что нет, это не стандартный код C ++; это что-то совершенно другое.

В соответствующей заметке интерфейс и readonly также не являются ключевыми словами C ++. : -)

5 голосов
/ 13 февраля 2011

Это руководство по кодированию применимо к IDL, а не к C ++, поэтому нет, attribute не является частью C ++.В руководстве рассматриваются сигнатуры C ++, которые генерирует IDL .

3 голосов
/ 13 февраля 2011

Это

interface nsIFoo : nsISupports {
    attribute long length;
    readonly attribute long color; 
};

- это I nterface D escription L anguage (используется для взаимодействия C ++ - Javascript).У Mozilla есть инструмент, который генерирует код C ++ для этого с обычными методами получения и установки.

Сам C ++ не имеет ключевого слова attribute.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...