#include <iostream> #include <memory> using namespace std; class BaseClass { }; class DerivedClass : public BaseClass { }; int main() { std::shared_ptr<BaseClass> base = make_shared<BaseClass>(); std::shared_ptr<DerivedClass> derived = make_shared<DerivedClass>(); bool baseIsAnInstanceOfBaseClass = (dynamic_pointer_cast<BaseClass>(base) != NULL); bool baseIsAnInstanceOfDerivedClass = (dynamic_pointer_cast<DerivedClass>(base) != NULL); bool derivedIsAnInstanceOfBaseClass = (dynamic_pointer_cast<BaseClass>(derived) != NULL); bool derivedIsAnInstanceOfDerivedClass = (dynamic_pointer_cast<DerivedClass>(derived) != NULL); cout << "base is an instance of BaseClass = " << baseIsAnInstanceOfBaseClass ? "true" : "false" << endl; cout << "base is an instance of DerivedClass = " << baseIsAnInstanceOfDerivedClass ? "true" : "false" << endl; cout << "derived is an instance of BaseClass = " << derivedIsAnInstanceOfBaseClass ? "true" : "false" << endl; cout << "derived is an instance of DerivedClass = " << derivedIsAnInstanceOfDerivedClass ? "true" : "false" << endl; return 0; }
Standard input is empty
prog.cpp: In function 'int main()':
prog.cpp:12:2: error: 'shared_ptr' is not a member of 'std'
std::shared_ptr<BaseClass> base = make_shared<BaseClass>();
^
prog.cpp:12:27: error: expected primary-expression before '>' token
std::shared_ptr<BaseClass> base = make_shared<BaseClass>();
^
prog.cpp:12:29: error: 'base' was not declared in this scope
std::shared_ptr<BaseClass> base = make_shared<BaseClass>();
^
prog.cpp:12:36: error: 'make_shared' was not declared in this scope
std::shared_ptr<BaseClass> base = make_shared<BaseClass>();
^
prog.cpp:12:57: error: expected primary-expression before '>' token
std::shared_ptr<BaseClass> base = make_shared<BaseClass>();
^
prog.cpp:12:59: error: expected primary-expression before ')' token
std::shared_ptr<BaseClass> base = make_shared<BaseClass>();
^
prog.cpp:13:2: error: 'shared_ptr' is not a member of 'std'
std::shared_ptr<DerivedClass> derived = make_shared<DerivedClass>();
^
prog.cpp:13:30: error: expected primary-expression before '>' token
std::shared_ptr<DerivedClass> derived = make_shared<DerivedClass>();
^
prog.cpp:13:32: error: 'derived' was not declared in this scope
std::shared_ptr<DerivedClass> derived = make_shared<DerivedClass>();
^
prog.cpp:13:66: error: expected primary-expression before '>' token
std::shared_ptr<DerivedClass> derived = make_shared<DerivedClass>();
^
prog.cpp:13:68: error: expected primary-expression before ')' token
std::shared_ptr<DerivedClass> derived = make_shared<DerivedClass>();
^
prog.cpp:15:38: error: 'dynamic_pointer_cast' was not declared in this scope
bool baseIsAnInstanceOfBaseClass = (dynamic_pointer_cast<BaseClass>(base) != NULL);
^
prog.cpp:15:68: error: expected primary-expression before '>' token
bool baseIsAnInstanceOfBaseClass = (dynamic_pointer_cast<BaseClass>(base) != NULL);
^
prog.cpp:16:74: error: expected primary-expression before '>' token
bool baseIsAnInstanceOfDerivedClass = (dynamic_pointer_cast<DerivedClass>(base) != NULL);
^
prog.cpp:17:71: error: expected primary-expression before '>' token
bool derivedIsAnInstanceOfBaseClass = (dynamic_pointer_cast<BaseClass>(derived) != NULL);
^
prog.cpp:18:77: error: expected primary-expression before '>' token
bool derivedIsAnInstanceOfDerivedClass = (dynamic_pointer_cast<DerivedClass>(derived) != NULL);
^
prog.cpp:20:101: error: invalid operands of types 'const char [6]' and '<unresolved overloaded function type>' to binary 'operator<<'
cout << "base is an instance of BaseClass = " << baseIsAnInstanceOfBaseClass ? "true" : "false" << endl;
^
prog.cpp:21:107: error: invalid operands of types 'const char [6]' and '<unresolved overloaded function type>' to binary 'operator<<'
cout << "base is an instance of DerivedClass = " << baseIsAnInstanceOfDerivedClass ? "true" : "false" << endl;
^
prog.cpp:22:107: error: invalid operands of types 'const char [6]' and '<unresolved overloaded function type>' to binary 'operator<<'
cout << "derived is an instance of BaseClass = " << derivedIsAnInstanceOfBaseClass ? "true" : "false" << endl;
^
prog.cpp:23:113: error: invalid operands of types 'const char [6]' and '<unresolved overloaded function type>' to binary 'operator<<'
cout << "derived is an instance of DerivedClass = " << derivedIsAnInstanceOfDerivedClass ? "true" : "false" << endl;
^
Standard output is empty