За небольшой промежуток времени на форуме несколько тредов про то, что люди забывают ставить ";" в определённых местах... Сам раньше регулярно, сейчас тоже иногда, туплю над загадочными сообщениями компилятора, по причине того, что забыл ";" после определения класса...
Особенно интересно, когда компилятор указывает, что ошибка в первой строчке .cpp файла, где какой-нибудь инклюд стоит
Надовит на мысли... В одних местах нельзя ставить сабж, в других обязательно, в третьих по-желанию (это особенно интересно
).
Раньше наверное проблемы были с синтаксическими анализаторами... Сделали бы что ли и после классов сабж не обязательно, как после функций. И совместимость бы не нарушили.
Здравствуйте, remark, Вы писали:
R>Надовит на мысли... В одних местах нельзя ставить сабж, в других обязательно, в третьих по-желанию (это особенно интересно ).
А по желанию это в каком случае?
Здравствуйте, lLPl, Вы писали:
LP>Здравствуйте, remark, Вы писали:
R>>Надовит на мысли... В одних местах нельзя ставить сабж, в других обязательно, в третьих по-желанию (это особенно интересно ).
LP>А по желанию это в каком случае?
По желанию, точку с запятой можно ставить, а можно и не ставить после определения инлайновой функции, определённой внутри определения класса
9.2 Class members
member-specification:
member-declaration member-specification opt
access-specifier : member-specification opt
member-declaration:
decl-specifier-seq opt member-declarator-list opt ;
function-definition ;opt
Здравствуйте, remark, Вы писали:
R>Раньше наверное проблемы были с синтаксическими анализаторами... Сделали бы что ли и после классов сабж не обязательно, как после функций. И совместимость бы не нарушили.
Проблема в том, что после определения класса может идти объявление переменной(/ых).
class A
{
//...
} obj, *ptr ;
Поэтому без точки с запятой не обойтись.