Re[2]: Инициализация в условии
От: SergeCpp Россия http://zoozahita.ru
Дата: 03.08.05 06:24
Оценка:
Здравствуйте, Сергей Зизев, Вы писали:

СЗ>Здравствуйте, SergeCpp, Вы писали:


SC>>Здравствуйте,все!


SC>>Очень странно...


SC>>VC6 поддерживает

СЗ>Ошибка в VC6

SC>>if( int ok( 123 ) )

SC>>{
SC>> //...
SC>>}

СЗ>Выражение int ok( 123 ) есть ни что иное как определние функции, оно не может стоят в условии оператора if.

СЗ>Условием оператора if может быть либо выражение либо декларатор, поэтому если Вы хотите внутри блока if объявить переменную ok и присвоить ей значение, то синтаксис должен быть такой:

СЗ>
СЗ>if (int ok = 123) 
СЗ>{
СЗ>  std::cout << ok << std::endl; 
СЗ>}
СЗ>



Я не согласен с Вами.

"int ok( 123 )" есть объявление объекта типа "int" с именем "ok"...

Дело НЕ в int.

class SomeType
{
//... где-то тут ЕСТЬ конструктор с параметром типа "int"

operator bool(){ return true; } // например
};

if( SomeType ok( 123 ) ) // конструируем из 123 и проверяем "не отходя от кассы"
{
// do use "ok"
}

Это РАБОТАЕТ в VC6
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.