首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

如何才能让两个类型之间可以通过构造函数进行相互转换

2013-08-04 
怎么才能让两个类型之间可以通过构造函数进行相互转换?本帖最后由 shendaowu 于 2013-07-27 20:23:24 编辑

怎么才能让两个类型之间可以通过构造函数进行相互转换?
本帖最后由 shendaowu 于 2013-07-27 20:23:24 编辑

#include <iostream>

using namespace std;

class T;

class U
{
public:
    U( int i ) { m_n = i; }
    U( T t ) { m_n = t.m_n; };
    int m_n;
};

class T
{
public:
    T( U u ) { m_n = u.m_n; }
    T( int i ) { m_n = i; }
    bool operator==( T t ) { return m_n == t.m_n; }
    int m_n;
};

int main()
{
    T t( 2 );
    U u( 3 );
    
    if( t == u )
        cout << "equ." << endl;
    else
        cout << "not euq." << endl;

    return 0;
}
如果不能通过这种方法实现相互转换的话,要怎么弄?后面的等于不是重点,重点是怎么相互转换,我是在测试那个等于的时候发现不能相互转换的。
[解决办法]
C++基础一点也不扎实,一天到晚在论坛里发没内涵的提问帖,楼主是不是有点太急躁了.

#include <iostream>
using namespace std;
 
class T;
 
class U
{
public:
    U( int i ) { m_n = i; }
    U( const T &t );
    int m_n;
};
 
class T
{
public:
    T( const U &u ) { m_n = u.m_n; }
    T( int i ) { m_n = i; }
    bool operator==( const T &t ) { return m_n == t.m_n; }
    int m_n;
};

U::U(const T &t) { m_n = t.m_n; };


 
int main()
{
    T t( 2 );
    U u( 3 );
     
    if( t == u )
        cout << "equ." << endl;
    else
        cout << "not euq." << endl;
 
    return 0;
}

热点排行