为什么我不能在这个条件下定义变量

why I cannot do such a variable definition in if condition

本文关键字:条件 条件下 下定义 变量 不能 为什么      更新时间:2023-10-16

下面的语句给了我一个意外的编译错误:

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

GCC 4.1.2说ptr没有定义为错误。不过,普通的定义和赋值也可以。如

if (const int* ptr = f())

那么是什么使得它不适合上面的代码段呢?

不,这不是另一个线程的重复,因为我已经指出了简单的情况下工作,但不是这样的情况。如果你认为这是一个重复,你能至少指出为什么上面的那个不起作用吗?

This

(const AClass*) ptr

是将ptr强制转换为类型const AClass*,而不是声明。如果你还没有声明ptr,那么你会得到你提到的错误。