Re: наверно я многого хочу: поддержка конструкций
От: _Jane_ Украина  
Дата: 25.06.08 13:26
Оценка:
Здравствуйте, varnie, Вы писали:

V>на подобное натыкаюсь зачастую, и приходится вместо этого писать:

V>
V> const Foo *pFoo = getFoo();
V> if (pFoo){
V>    //работает далее с pFoo
V> }
V> //здесь уже pFoo нет
V>

V>но немного не нравится, т.к. по логике сама переменная pFoo нам нужна только в теле блока if, а получается, что в моем последнем примере она будет доступна далее _после_ тела if. или я много хочу?

Некоторые особо умные компиляторы и так делают такие переменные доступными после тела if

V>спасибо за комменты.
Jane
Re[3]: наверно я многого хочу: поддержка конструкций
От: Roman Odaisky Украина  
Дата: 25.06.08 13:48
Оценка:
Здравствуйте, Sergey, Вы писали:

>> Чего на самом деле не хватает, так это using, как в C#:

>> using(X x = getX())
>> if(i_like(x) && x.is_very_nice())
>> {
>> . . .
>> }
>> В C++ это можно сделать только через for:
>> http://www.rsdn.ru/forum/message/2397489.1.aspx
Автор: Roman Odaisky
Дата: 07.03.07


S>А чем это лучше обычных фигурных скобок?


Тем, что можно использовать в макросах. Например:
#define DOUBLE_FOR(decl1, decl2, cond1, cond2, upd1, upd2) \
    using(decl1) \
    for(decl2; (cond1) && (cond2); (upd1), (upd2))

Иногда в макросах нужно вставить несколько объявлений, а for не подходит из-за break/continue, и фигурные скобки не подходят из-за того, что закрывающую скобку ставить некому.

И вообще, код вроде
doSomething();

using(Lock lock(mutex))
{
    doSomethingElse();
}

выглядит, по-моему, естественнее, чем фигурные скобки из ниоткуда:
doSomething();

{
    Lock lock(mutex);

    doSomethingElse();
}
До последнего не верил в пирамиду Лебедева.
Re[4]: наверно я многого хочу: поддержка конструкций
От: Sergey Россия  
Дата: 25.06.08 14:37
Оценка: +2
Roman Odaisky пишет:

>> > Чего на самом деле не хватает, так это using, как в C#:

>> > using(X x = getX())
>> > if(i_like(x) && x.is_very_nice())
>> > {
>> > . . .
>> > }
>> > В C++ это можно сделать только через for:
>> > http://www.rsdn.ru/forum/message/2397489.1.aspx
Автор: Roman Odaisky
Дата: 07.03.07

> <http://rsdn.ru/forum/message/2397489.1.aspx&gt;
Автор: Roman Odaisky
Дата: 07.03.07

>
> S>А чем это лучше обычных фигурных скобок?
>
> Тем, что можно использовать в макросах. Например:
>
> #define DOUBLE_FOR(decl1, decl2, cond1, cond2, upd1, upd2) \
> using(decl1) \
> for(decl2; (cond1) && (cond2); (upd1), (upd2))
>
>
> Иногда в макросах нужно вставить несколько объявлений, а for не подходит
> из-за break/continue, и фигурные скобки не подходят из-за того, что
> закрывающую скобку ставить некому.

Нда, странные у людей потребности...

> И вообще, код вроде

>
> doSomething();
>
> using(Lock lock(mutex))
> {
> doSomethingElse();
> }
>
>
> выглядит, по-моему, естественнее, чем фигурные скобки из ниоткуда:
>
> doSomething();
>
> {
> Lock lock(mutex);
>
> doSomethingElse();
> }

По-моему наоборот.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.