为什么我不能在if条件下做这样的变量定义

时间:2015-10-20 01:16:48

标签: c++ if-statement dynamic-cast

以下语句给我一个令我惊讶的编译器错误:

BaseClass& base;

if (((const AClass*) ptr = dynamic_cast<const AClass*> (&base)) != NULL)
{
  ...
}

GCC 4.1.2表示ptr未被定义为错误。然而,普通的定义和分配是有效的。如

if (const int* ptr = f())

那么是什么让它不能用于上面的代码段呢?

不,这不是另一个线程的重复,因为我已经指出简单的情况有效,但不是这种情况。如果你认为这是一个重复,你至少可以指出为什么上面那个不起作用。

1 个答案:

答案 0 :(得分:1)

(const AClass*) ptr

ptrconst AClass*类型的强制转换,而不是声明。如果您尚未宣布ptr,那么您将收到您提到的错误。