এই সেকশনে আমরা দেখব C++-এ RTTI (Runtime Type Information) কী। C++-এ RTTI হল একটি মেকানিজম, যা রানটাইমে একটি অবজেক্টের ডেটা টাইপ সম্পর্কে ইনফরমেশন প্রকাশ করে। এই ফিচারটি শুধু তখন উপলব্ধ হয় যখন ক্লাসে কমপক্ষে একটি ভার্চুয়াল ফাংশন থাকে। এটি প্রোগ্রাম এক্সিকিউশনের সময় অবজেক্টের টাইপ নির্ধারণ করতে দেয়।
নিচের উদাহরণে প্রথম কোডটি কাজ করবে না। এটি এরর জেনারেট করবে "cannot dynamic_cast base_ptr (of type Base*) to type 'class Derived*' (Source type is not polymorphic)"। এই এরর আসে কারণ এই উদাহরণে কোনো ভার্চুয়াল ফাংশন নেই।
#includeusing namespace std; class Base { }; class Derived : public Base {}; int main() { Base *base_ptr = new Derived; Derived *derived_ptr = dynamic_cast (base_ptr); if (derived_ptr != NULL) cout << "It is working"; else cout << "cannot cast Base* to Derived*"; return 0; }
এখন একটি ভার্চুয়াল মেথড যোগ করলে এটি কাজ করবে।
#includeusing namespace std; class Base { virtual void function() { /* খালি ফাংশন */ } }; class Derived : public Base {}; int main() { Base *base_ptr = new Derived; Derived *derived_ptr = dynamic_cast (base_ptr); if (derived_ptr != NULL) cout << "It is working"; else cout << "cannot cast Base* to Derived*"; return 0; }
It is working