c++:双边类转换

C++: Bilateral class conversion

本文关键字:转换 c++      更新时间:2023-10-16

假设我有两个简单的类:integer中只有一个int变量,real中有double变量。我已经写好了,所以

integer a=2016; int b=a;

real a=20.16; double b=a;

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

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

或者至少使用类似的语法。我知道在将double型转换为int型时会有一些数据丢失,我会处理的。怎么做呢?我应该包括什么和在哪里,以及写什么方法/操作符重载?我的项目分为main.cpp, integer.h, integer.cpp, real.h, real.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;
}

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

第一个是编写转换操作符,可以将real对象转换为integer对象,反之亦然。

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