diff options
Diffstat (limited to 'ACE/contrib/utility/Example/ExH/BadCast')
-rw-r--r-- | ACE/contrib/utility/Example/ExH/BadCast/Makefile | 24 | ||||
-rw-r--r-- | ACE/contrib/utility/Example/ExH/BadCast/bad_cast.cpp | 52 |
2 files changed, 76 insertions, 0 deletions
diff --git a/ACE/contrib/utility/Example/ExH/BadCast/Makefile b/ACE/contrib/utility/Example/ExH/BadCast/Makefile new file mode 100644 index 00000000000..9963d9708a1 --- /dev/null +++ b/ACE/contrib/utility/Example/ExH/BadCast/Makefile @@ -0,0 +1,24 @@ +# file : Example/ExH/BadCast/Makefile +# author : Boris Kolpackov <boris@kolpackov.net> +# copyright : Copyright (c) 2002-2003 Boris Kolpackov +# license : http://kolpackov.net/license.html + +root := ../../.. + +include $(root)/BuildRules/Bootstrap.rules + +$(call include, $(root)/BuildRules/Executable.pre.rules) + + +cxx_translation_units := bad_cast.cpp + +module_base := bad_cast +module_prefix := +module_suffix := + + +CXX_PREPROCESS_FLAGS += -I $(root) + + +$(call include, $(root)/BuildRules/Executable.post.rules) +# $Id$ diff --git a/ACE/contrib/utility/Example/ExH/BadCast/bad_cast.cpp b/ACE/contrib/utility/Example/ExH/BadCast/bad_cast.cpp new file mode 100644 index 00000000000..cb4a59e26a9 --- /dev/null +++ b/ACE/contrib/utility/Example/ExH/BadCast/bad_cast.cpp @@ -0,0 +1,52 @@ +// file : Example/ExH/BadCast/bad_cast.cpp +// author : Boris Kolpackov <boris@kolpackov.net> +// copyright : Copyright (c) 2002-2003 Boris Kolpackov +// license : http://kolpackov.net/license.html + +#include "Utility/ExH/System/Exception.hpp" + +#include <iostream> + +using std::cerr; +using std::endl; + + +struct A +{ + virtual + ~A() {} +}; + +struct B +{ + void + foo () {} +}; + +void +foo () throw (Utility::ExH::System::Exception) +{ + A a; + + A& ar (a); + + B& br (dynamic_cast<B&> (ar)); + + br.foo (); +} + +int +main () +{ + try + { + foo (); + } + catch (Utility::ExH::System::Exception const& ex) + { + cerr << "Caught Utility::ExH::System::Exception: " + << ex.what () + << endl; + } +} +//$Id$ |