diff options
Diffstat (limited to 'ACE/contrib/utility/Example/ExH/BadCast/bad_cast.cpp')
-rw-r--r-- | ACE/contrib/utility/Example/ExH/BadCast/bad_cast.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
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$ |