Следующее утверждение дает мне компилятор ошибки как сюрприз для меня:почему я не могу сделать такое определение переменной, если условие
BaseClass& base;
if (((const AClass*) ptr = dynamic_cast<const AClass*> (&base)) != NULL)
{
...
}
GCC 4.1.2 говорит PTR не определяется как ошибка. Однако обычная дефиниция и назначение будут работать. Такие, как
if (const int* ptr = f())
Так что же заставляет его не работать над вышеуказанным сегментом кода?
Нет, это не дублирование другой темы, поскольку я указал на простой корпус, но не на такой случай. Если вы считаете, что это дублирование, вы можете хотя бы указать, почему выше не работает.
Возможный дубликат [Объявление и инициализация переменной в условном или контрольном выражении в C++] (http://stackoverflow.com/questions/1516919/declaring-and-initializing-a-variable-in-a-conditional- или-control-statement-in-c) – Rostislav
Возможно, вы имели в виду 'if (const AClass * ptr = dynamic_cast (& base))' –
@MM Пробовал все такие варианты, но все равно такую же ошибку. –