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