Как стать автором
Обновить

Комментарии 7

Так. Если по простому, то всё сводится к тому, что

class TDStretch *pTDStretch;

эквивалентно

class TDStretch;
TDStretch *pTDStretch;

– я правильно понял? (всегда писал только вторым способом, он прозрачен).

А то картинка с неймспейсами несколько запутала, всё пытался понять, при чём тут они...

Upd: перечитал повнимательней, ещё и не эквивалентно... Ну, лишний повод никогда не писать как в первом варианте.

не эквивалентно, потому что если дело происходит внутри класса, то первое объявит класс во внешней области, а второй вариант -- внутри класса

Угу. Говорю ж – лишний повод никогда так не писать. То, что пишется в классе – должно оставаться в классе. На месте PVS я б добавил диагностику на такой код...

// uses previously-declared class '::Bar'

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

Никогда я не понимал программистов, которые используют такие атавизмы времён С на пустом месте. Использование конструкций из С в С++, да ещё и с сущностями С++ - верный способ выстрелить себе в ногу. Вы что там, боитесь написать лишнюю строчку кода?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий