#include typedef int IntArray[2]; typedef struct { int A, B; } IntStruct; class TwoClass { protected: IntArray A; public: TwoClass(); TwoClass(IntArray X); void Display(); } TwoClass::TwoClass() //Default constructor; { } TwoClass::TwoClass(IntArray X) //Constructor to allow initialization from integer array { A[0] = X[0]; A[1] = X[1]; } void TwoClass::Display() //Display data members { cout << "A[0] = " << A[0] << "\n"; cout << "A[1] = " << A[1] << "\n"; } class OneClass { protected: float A, B; //two data members public: OneClass(); //constructors OneClass(IntArray X); OneClass(IntStruct Y); void Display(); operator TwoClass(); }; OneClass::OneClass() //Default constructor { } OneClass::OneClass(IntArray X) //Constructor to allow conversion from integer arrays { A = X[0]; B = X[1]; } OneClass::OneClass(IntStruct Y) //Constructor to allow conversion from IntStruct variables { A = Y.A; B = Y.B; } void OneClass::Display() //Display object data members. { cout << "1st data member = " << A << "\n"; cout << "2nd data member = " << B << "\n"; } OneClass::operator TwoClass() { IntArray X; X[0] = A; X[1] = B; TwoClass Y = TwoClass(X); return(Y); } void main() { IntArray X; //array of 2 integer elements IntStruct Y; //struct with 2 integer data fields X[0] = 1; X[1] = 2; OneClass I = OneClass(X); //constructor initialization OneClass J = (OneClass) X; //C style typecast OneClass K = X; //conversion constructor I.Display(); J.Display(); K.Display(); Y.A = 3; Y.B = 4; OneClass L = OneClass(Y); //constructor initialization OneClass M = (OneClass) Y; //C style typecast OneClass N = Y; //conversion constructor L.Display(); M.Display(); N.Display(); Y.A = 5; Y.B = 6; OneClass W = Y; //create OneClass instance W W.Display(); TwoClass Q = (TwoClass) W; //convert W TwoClass instance Q.Display(); }