On-line: гостей 0. Всего: 0 [подробнее..]
Программисты всех стран, объединяйтесь!

АвторСообщение



ссылка на сообщение  Отправлено: 28.07.12 17:42. Заголовок: Изменения в новом стандарте относительно вложенных классов.


Сейчас просматривал раздел нового стандарта С++ 2011, описывающий вложенные классы, и обнаружил такое интересное отличие от предыдущего стандарта. В параграфе #1 приводится пример корректного обращения во вложенном классе к членам, объявленным в во внешнем классе. Для простоты я сокращу пример до минимума

class enclose 
{
public:
int x;
class inner
{
void f( int i )
{
int a = sizeof( x ); // Смотри ниже комментарий
}
};
};


Так, вот, в стандарте С++ 2003 напротив помеченной мной строки имеется комментарий // error: refers to enclose::x, то есть во вложенном классе нельзя ссылаться на не статические члены внешнего класса.

Теперь, в новом стандарте С++ 2011 напротив этой строки уже другой комментарий: // OK: operand of sizeof is an unevaluated operand

Вот теперь будет путаница у программистов! Кто-то увидет подобный код и категорично заявит, что это - ошибка. А кто-то другой скажет, что это совершенно корректный код. И будут спорить до посинения!:)

Вообще-то, период перехода от одного стандарта к другому порой создает серьезные проблемы!







Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 1 [только новые]





ссылка на сообщение  Отправлено: 28.07.12 17:42. Заголовок: Решил проверить, а к..


Решил проверить, а как ведет себя MS VC++ 2010 по отношению к описанному изменению стандарта. Увы, здесь MS VC++ 2010 следует положениям старого стандарта, то есть стандарта С++ 2003, и приведенный выше пример не компилируется. То есть выдается сообщение об ошибке для оператора sizeof, говорящее о том, что нельзя использовать не статические члены внешнего класса.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет