|
|
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.
- 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;
}
- 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
|
 |
|
|
|
|
|
|