class A {
};
class B : public A {
public:
voidoperator++( int ) {}
voidoperator++() {}
};
void f( A* a )
{
((B *)a).operator++( 0 ); //нормально
((B *)a).operator++(); //нормально
++((B *)a); //нормально
((B *)a)++; //ошибка
}
class A {
public:
int f() { return ( 1 ); }
};
class B {
public:
B( const A *aa ) : a( aa ) {}
int g() { return ( a.f() ); } //должно быть предупреждение, поскольку a.f() не constconst A *a;
};
当基类指针显式转换为派生类指针时,后缀运算符++的简略符号不能编译。
至少编译器 应该警告,a.f()不是常量。
谢谢你的提醒,这两个错误都已改正。
但在模板中。 我以后会给你举例。
这里也是--不清楚。
一切工作正常,但如果你加入中间函数ex2(...)
其结果是不同的。ex2(...)做了什么?- 只是将指针通过引用传递到
请看一下
这里也是--不清楚。
一切工作正常,但如果你加入中间函数ex2(...)
其结果是不同的。ex2(...)做了什么?- 只是将指针通过引用传递到
请看一下
这不是第一次,但这是唯一一次在上传时得到这样的照片,这意味着你必须设置一些标准(你可能有某种尺寸)。
).其他地方都是正常显示。请告诉我什么是错的。
如果一个宏使用了一个结果类型转换,而返回值随后没有被使用(有时需要,有时不需要),就会发生不必要的编译错误。
这与使用辩护词没有关系。
一个简单的定义等价物也会产生同样的错误
P.S. 现在这里会有一个Vorning。
重新编译指标后,在处理动态数 组时开始出现 "数组超出范围 "的错误。
这在以前没有发生过。该怎么做?