繁体   English   中英

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

[英]why I cannot do such a variable definition in if condition

以下语句给我一个编译器错误,这让我感到惊讶:

BaseClass& base;

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

GCC 4.1.2表示ptr未定义为错误。 但是,普通的定义和分配将起作用。

if (const int* ptr = f())

那么什么使它不适用于以上代码段?

不,这不是其他线程的重复,因为我已经指出了简单的案例是可行的,但并非如此。 如果您认为这是重复的,那么您至少可以指出上述原因为何不起作用。

这个

(const AClass*) ptr

ptr的类型const AClass* ,类型为const AClass* ,而不是声明。 如果您尚未声明ptr则将收到您提到的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM