Hi,
i got a base class,and 2 derieved classes.derieved1 and derieved 2.
In the main class,i create a derieved1 and derieve2 object. add it to vector vector<base*> list .
Then i try casting out the first vector item to see if dereived 1 or derieved2. the tests to check if derieved 1 or 2 work for both.
The classes:
the main function:Code:class base{ protected: base(int val){ value=val; } public: int value; }; class derieved1:public base { private: string data; public: derieved1(int val,string x):base(val),data(x){ } void print(){ cout<<"\ndereieved 1"; } }; class derieved2:public base { private: string data; public: derieved2(int val,string x):base(val),data(x){ } void print(){ cout<<"\ndereieved 2"; } };
The program prints outs :Code:int main(int argc, char *argv[]) { vector<base*> list; derieved1* a=new derieved1(1,"derieved1"); derieved2* b=new derieved2(2,"derieved2"); list.push_back(a); list.push_back(b); base* bbbb=list[0]; //cast it to both derieved objects. derieved1*sb=static_cast<derieved1*>(bbbb); derieved2*sb1=static_cast<derieved2*>(bbbb); //check which one is valid. if(sb){ cout<<"object of type derieved1"<<endl; } if(sb1){ cout<<"object of type derieved2"<<endl; //should not display } system("PAUSE"); return EXIT_SUCCESS; }
object of type derieved1
object of type derieved2



LinkBack URL
About LinkBacks


