为什么我不能在这个条件下定义变量
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())
那么是什么使得它不适合上面的代码段呢?
不,这不是另一个线程的重复,因为我已经指出了简单的情况下工作,但不是这样的情况。如果你认为这是一个重复,你能至少指出为什么上面的那个不起作用吗?
This
(const AClass*) ptr
是将ptr
强制转换为类型const AClass*
,而不是声明。如果你还没有声明ptr
,那么你会得到你提到的错误。
相关文章:
- 在没有太多条件句的情况下,我如何避免被零除
- 为什么简单的算术减法在"if"条件下不起作用?
- 在什么条件下使用 std::memcpy 在对象之间复制是安全的?
- 改进简单条件下C++样式
- 唤醒多个线程以在每个条件下工作一次
- 如果验证容器的大小并在同一条件语句下访问元素,这是很好的做法吗?
- "is defined"宏检查及其调用必须处于不同的条件下吗?
- C++可以有条件地向下转换类指针吗
- 在if条件下,右或左改变值的相等性检查是否有任何区别
- C++代码在 for 循环的条件下给出运行时错误,而如果它被具有相同意义的代码替换,则编译正确
- 如果条件 C++,如何跳过下一行
- 在 constexpr-if 条件下比较 constexpr 函数参数会导致错误
- Qt qml - 在没有任何条件的情况下运行一行(while(true))
- 轮班操作在条件下使用的说明
- 如何在不使用宏的情况下在宏中创建条件
- 在不同条件下无法访问我的向量变量
- 在某些条件下最大化 GCD
- 如何更改此空隙函数,以便在特殊条件下返回一个生成的字符串
- 在没有互斥锁的情况下重新计数时如何避免竞争条件?
- 在if-Statement条件下与分配有关的错误