C ++:双边类转换

时间:2016-09-14 12:45:22

标签: c++

让我们说,我有两个简单的类:integer只有一个int变量,realdouble。我已经这样做了

integer a=2016; int b=a;

real a=20.16; double b=a;

完美地工作。现在我必须在它们之间进行转换,如下所示:

integer foo; real bar; foo=bar; bar=foo;

或者至少使用类似的语法。我知道在将double转换为int时会丢失一些数据,我会处理它。那我该怎么办呢?我应该在哪里和哪里#include以及方法/运算符重载的内容?我的项目分为main.cppinteger.hinteger.cppreal.hreal.cpp个文件。感谢。

编辑:课程如下:

//integer.h
class integer
{
    private:
        int a;
    public:
        integer();
        integer(int number);
        operator int() const;
};
//integer.cpp
#include "integer.h"

integer::integer(){
    a=0;
}
integer::integer(int number){
    a=number;
}
integer::operator int() const{
    return a;
}
//real.h
class real {
    private:
        double a;
    public:
        real();
        real(double number);
        operator double() const;
};
//real.cpp
#include "real.h"

real::real(){
    a=0;
}
real::real(double number){
    a=number;
}
real::operator double() const{
    return a;
}

1 个答案:

答案 0 :(得分:2)

你基本上有两个问题的解决方案:

第一种是编写可以将real对象转换为integer对象的conversion operators,反之亦然。

另一个解决方案是实现自定义构造函数和赋值运算符以获取另一个类。