C++ এর কোনো সরাসরি পদ্ধতি নেই যে কোনো একটি অবজেক্ট কোনো ক্লাস টাইপের একটি উদাহরণ কিনা তা পরীক্ষা করার জন্য। জাভাতে, আমরা এই ধরনের সুবিধা পেতে পারি।
C++11-এ, আমরা is_base_of
"ইনস্ট্যান্সফ" এর মতো নিকটতম সম্ভাব্য কার্যকারিতা ডাইনামিক_কাস্ট
উদাহরণ কোড
#include <iostream> using namespace std; template<typename Base, typename T> inline bool instanceof(const T *ptr) { return dynamic_cast<const Base*>(ptr) != nullptr; } class Parent { public: virtual ~Parent() {} virtual void foo () { std::cout << "Parent\n"; } }; class Child : public Parent { public: virtual void foo() { std::cout << "Child\n"; } }; class AnotherClass{}; int main() { Parent p; Child c; AnotherClass a; Parent *ptr1 = &p; Child *ptr2 = &c; AnotherClass *ptr3 = &a; if(instanceof<Parent>(ptr1)) { cout << "p is an instance of the class Parent" << endl; } else { cout << "p is not an instance of the class Parent" << endl; } if(instanceof<Parent>(ptr2)) { cout << "c is an instance of the class Parent" << endl; } else { cout << "c is not an instance of the class Parent" << endl; } if(instanceof<Child>(ptr2)) { cout << "c is an instance of the class Child" << endl; } else { cout << "c is not an instance of the class Child" << endl; } if(instanceof<Child>(ptr1)) { cout << "p is an instance of the class Child" << endl; } else { cout << "p is not an instance of the class Child" << endl; } if(instanceof<AnotherClass>(ptr2)) { cout << "c is an instance of AnotherClass class" << endl; } else { cout << "c is not an instance of AnotherClass class" << endl; } }
আউটপুট
p is an instance of the class Parent c is an instance of the class Parent c is an instance of the class Child p is not an instance of the class Child c is not an instance of AnotherClass class