下面的语句给我的编译器错误作为一个惊喜,给我做这样的变量定义:为什么我不能在if条件
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- or-control-statement-in-c) – Rostislav
也许你的意思是'if(const AClass * ptr = dynamic_cast(&base))' –
@MM尝试了所有这些变体,但仍然是相同的错误。 –