#include "StarCasting.hpp" using namespace Star; struct ClassA { virtual ~ClassA() {} }; struct ClassB : ClassA { ClassB(int member) : member(member) {} virtual ~ClassB() {} int member; }; int main(int argc, char** argv) { ClassA* ptra = new ClassA(); ClassA* ptrb = new ClassB(42); coutf("%s\n", is(ptra)); coutf("%s\n", is(ptrb)); coutf("%s\n", convert(ptrb)->member); try { // Expected to throw exception coutf("%s\n", convert(ptra)->member); } catch (std::exception const& e) { coutf("Expected exception caught: %s\n", e.what()); } shared_ptr sharedptra = make_shared(); shared_ptr sharedptrb = make_shared(42); coutf("%s\n", is(sharedptra)); coutf("%s\n", is(sharedptrb)); coutf("%s\n", convert(sharedptrb)->member); try { // Expected to throw exception coutf("%s\n", convert(sharedptra)->member); } catch (std::exception const& e) { coutf("Expected exception caught: %s\n", e.what()); } delete ptra; delete ptrb; return 0; }