?? dyncast6.c
字號:
// { dg-do run }// { dg-options "-w -ansi -pedantic-errors" }// Copyright (C) 2000 Free Software Foundation, Inc.// Contributed by Nathan Sidwell 20 June 2000 <nathan@codesourcery.com>// Origin GNATS bug report 143 from Carlo Wood <carlo@runaway.xs4all.nl>// We were generating incorrect type_info structures, and hence breaking// dynamic_cast.#include <stdio.h>class OBASE { public: virtual void bz () {}};class IBASE { public: virtual void by () {}};class V {public:int m; };class A : public virtual V { };class AA : public A {};class B : public OBASE, public A { public: virtual void foo(void) { } };class B1 : public OBASE, public AA { public: virtual void foo(void) { } };class C : public IBASE, public virtual V { };class D : public B, public C { };class E : public B, public virtual V { };class E1 : public B1, public virtual V {};class E2 : public B1, public A, public virtual V {};int main(void){ D d; E e; E1 e1; E2 e2; int code = 0; OBASE* osd = &d; OBASE* ose = &e; OBASE* ose1 = &e1; OBASE* ose2 = &e2; if (!dynamic_cast<V*>(osd)) { printf ("fail osd\n"); code++; } if (!dynamic_cast<V*>(ose)) { printf ("fail ose\n"); code++; } if (!dynamic_cast<V*>(ose1)) { printf ("fail ose1\n"); code++; } if (!dynamic_cast<V*>(ose2)) { printf ("fail ose2\n"); code++; } return code;}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -