Skip navigation

IS THERE an IS keyword in C++ like in C#?

YES, there is an IS keyword in C++. Just like in C#.

WRONG
WRONG

A few days ago I had this question and I saw this answer “NO” and I took it and accepted it.

Only today I saw in some sample code just use of typeid(). And guess what? typeid() turns BLUE in the IDE!


#include <iostream>
#include <string>
using namespace std;

class Entity
{
public:
  int hp ;
};

class Grunt : public Entity
{
public:
  string name ;
};

int main()
{
  Grunt grom ;
  grom.hp = 500 ;
  grom.name = "GROM HELLSCREAM!" ;

  const type_info * typeOfG = &typeid( grom ) ;

  cout << typeOfG->name() << endl;

  
  Entity wisp ;
  wisp.hp = 120 ;

  const type_info * typeOfWisp = &typeid( wisp ) ;

  cout << typeOfWisp->name() << endl; 


  // equivalent of C# is:
  //if( grom is Grunt )
  //{
  //}

  // accomplished by
  string classGrunt = "class Grunt" ;
  if( typeid(grom).name() == classGrunt )
  {
    cout << "Grom is a grunt" << endl;
  }
  else
  {
    cout << "Grom is NOT a grunt" << endl;
  }
 

  // so we coudl make this a bit more elegant by
#define is( obj, type ) typeid(obj).name()==type
  if( is( grom, classGrunt ) )
  {
    cout << "Grom is a grunt" << endl;
  }
  else
  {
    cout << "Grom is NOT a grunt" << endl;
  }
 
  /*
  class type_info {
    bool operator==( type_info rhs ) ;
    bool operator!=( type_info rhs ) ;
    int before( type_info rhs ) ;
    const char* name();
    const char* raw_name();
  } ;
  */
  
}
Advertisements

One Comment

    • carlixyz
    • Posted May 6, 2011 at 2:27 am
    • Permalink

    AmazinG!


3 Trackbacks/Pingbacks

  1. By C++ C# « Bobobobo’s Weblog on 01 Jun 2009 at 5:13 pm

    […] Bobobobo’s Weblog technology and the internets About MECG 1CG 2INDEXbrowse « THERE IS A C# IS keyword equivalent in C++ […]

  2. […] in a row.. which I believed. One was the C# keyword IS equivalent in C++ doesn’t exist (which it does) and the other was there is no equivalent of keyword base in c++ (which there […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: