Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: C++
Expertise: Beginner
Apr 25, 2005

Converting One Class Type to a Different Class Type

There are two ways to convert the objects between two different class types.
  1. Define a constructor in the target class, which takes an argument from the source class type:
    
    class source; // forward declaration
    
    class target
    {
       public :
       target():m_str("WebSite")
       {}
       target (const source& src);
       string m_str;
    };
    
    class source
    {
       public:
       source () : m_ch(new char[5])
       {
       strcpy (m_ch, "DevX");
       }
    
       char* m_ch;
    };
    
    target ::target (const source& src) : m_str(src.m_ch)
    {}
    
    int main ()
    {
       source s;
       target t;
       cout << t.m_str << '\n';
       t = s;					//assigning
       target t_1 = s;			//initializing
       cout << s.m_ch << '\n';
       cout << t.m_str << '\n';
       cout << t_1.m_str << '\n';
       return 0;
    }
    
  2. Define a conversion function of the target class type in the source class. Don't define both, because doing so causes ambiguity for the compiler.
    
    class target
    {
       public:
       public :
       target():m_str("WebSite")
       {}
       target (const char* ch ) : m_str(ch)
       {}
       string m_str;
    };
    
    class source
    {
       public:
       source () : m_ch(new char[5])
       {
       strcpy (m_ch, "DevX");
       }
    
       operator target ()
       {
       return target (m_ch);
       }
    
       char* m_ch;
    };
    
    int main  ()
    {
       source s;
       target t;
       cout << t.m_str << '\n';
       t = s;                                  //assigning
       target t_1 = s;                 //initializing
       cout << s.m_ch << '\n';
       cout << t.m_str << '\n';
       cout << t_1.m_str << '\n';
       return 0;
       return 0;
    }
    
Saurabh Ramya
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap