[英]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.