diag0262.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 60 行
C
60 行
#ifdef __WATCOM_NEW_CASTS
struct B1 {
int b1;
virtual void f1( int v ) {
b1 = v;
}
virtual void f3( int v ) {
b1 = ~v;
}
B1() : b1(1) {
}
};
struct B2 {
int b2;
virtual void f2( int v ) {
b2 = v;
}
virtual void f3( int v ) {
b2 = ~v;
}
B2() : b2(2) {
}
};
struct B2I {
int b2;
virtual void f2( int v ) {
b2 = v;
}
virtual void f3( int v ) {
b2 = ~v;
}
B2I() : b2(2) {
}
};
struct D : B1, B2 {
int d;
virtual void f1( int v ) {
d = v + 1;
}
virtual void f2( int v ) {
d = v + 2;
}
virtual void f3( int v ) {
d = -v;
}
D() : d(3) {
}
};
void test( B2I * );
void test( D *p ) {
p->f3( 9 );
B2 *q = p;
test( reinterpret_cast< B2I * >( q ) );
}
#endif
#error This should be the only error
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?