📄 cast6.c
字号:
// Build don't link:// Copyright (C) 2000 Free Software Foundation, Inc.// Contributed by Nathan Sidwell 28 Nov 2000 <nathan@codesourcery.com>// We failed to reject static_cast and implicit conversions of pointers to// member that traversed a virtual base.struct bar{ int barm; static void a();};struct filler1 {int fm;};struct filler2 {int fm;};struct filler3 {int fm;};struct filler4 {int fm;};struct baz : filler1, bar, filler2{ int bazm;};struct foo : filler3, virtual baz, filler4{ static void a(); void b() {}; int m;};typedef void (bar::*barfPtr)();typedef void (foo::*foofPtr)();typedef int bar::*barmPtr;typedef int foo::*foomPtr;struct X;typedef void (X::*xfPtr) ();typedef int X::*xmPtr;int main (){ { foofPtr fp = &foo::b; barfPtr bp = static_cast <barfPtr> (fp); // ERROR - invalid static_cast foofPtr fp2 = static_cast <foofPtr> (bp); // ERROR - invalid static_cast foofPtr fp3 = bp; // ERROR - cannot convert fp3 = (foofPtr)bp; // WARNING - via virtual base foomPtr fmp = &foo::m; barmPtr bmp = static_cast <barmPtr> (fmp); // ERROR - invalid static_cast foomPtr fmp2 = static_cast <foomPtr> (bmp); // ERROR - invalid static_cast foomPtr fmp3 = bmp; // ERROR - cannot convert fmp3 = (foomPtr)bmp; // WARNING - via virtual base } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -