কম্পিউটার টিউটোরিয়াল

C++-এ RTTI (রান-টাইম টাইপ ইনফরমেশন)


এই সেকশনে আমরা দেখব C++-এ RTTI (Runtime Type Information) কী। C++-এ RTTI হল একটি মেকানিজম, যা রানটাইমে একটি অবজেক্টের ডেটা টাইপ সম্পর্কে ইনফরমেশন প্রকাশ করে। এই ফিচারটি শুধু তখন উপলব্ধ হয় যখন ক্লাসে কমপক্ষে একটি ভার্চুয়াল ফাংশন থাকে। এটি প্রোগ্রাম এক্সিকিউশনের সময় অবজেক্টের টাইপ নির্ধারণ করতে দেয়।

নিচের উদাহরণে প্রথম কোডটি কাজ করবে না। এটি এরর জেনারেট করবে "cannot dynamic_cast base_ptr (of type Base*) to type 'class Derived*' (Source type is not polymorphic)"। এই এরর আসে কারণ এই উদাহরণে কোনো ভার্চুয়াল ফাংশন নেই।

উদাহরণ কোড
#include 
using 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;
}

এখন একটি ভার্চুয়াল মেথড যোগ করলে এটি কাজ করবে।

উদাহরণ কোড
#include 
using 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
  1. C++-এ ভার্চুয়াল বেস ক্লাস কী

  2. C++-এ স্ট্রাকচার vs ক্লাস (Structure vs class in C++)

  3. C++-এ বেস ও ডেরাইভড ক্লাস এক্সেপশন ক্যাচ করা

  4. C++-এ লোকাল ক্লাস