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 + -
显示快捷键?