элемент данных с именем класса

Стандарт гласит:
«Член класса T не может использовать T в качестве своего имени, если он является статическим членом данных, функцией-членом, типом члена, шаблоном члена, перечислителем перечисления с незаданной областью, членом анонимного объединения-члена. Однако нестатический член данных может использовать имя T, если нет объявленных пользователем конструкторов. «

Однако, если я создаю этот класс, он дает ошибку компиляции.

class G
{
int G;
};

Я использую VS2013. Это не разрешено в Microsoft или?

8

Решение

Если VC ++ не позволяет этого, это ошибка.

Однако эта «функция» языка предназначена для совместимости с C, и Microsoft решила не делать упор на C. Например, функции C99, как правило, недоступны до тех пор, пока не будут приняты C ++. Вы никогда не должны намеренно объявлять такого члена в C ++.

(Это разрешено в C просто по умолчанию: нет ограничений на именование членов, и все члены являются нестатическими членами данных.)

3

Другие решения


По вопросам рекламы [email protected]