无法从'_int64'转换为'数据*'

Cés*_*ira 1 c++ time struct class converter

在我的项目中,我有一个与时间一起工作的类,它被声明为:

class Data {
    int dia;
    int mes;
    int ano;
    int hora;
    int minuto;

    public:
       Data();
       Data(int, int, int, int, int);
       Data(const Data &);
       void mostraData();
       void ImprimeData();
       Data operator-(const Data &aux);
};
Run Code Online (Sandbox Code Playgroud)

dia = day,mes = month,ano = year,hora = hour ....(葡萄牙语)

在某些时候,我必须计算两个不同时间之间的差异.所以我做了这个简单的操作符 - :

Data Data::operator-(const Data & aux){
    Data temp(0, 0, 0, 0, 0);
    temp.dia = this->dia - aux.dia;
    temp.mes = this->mes - aux.mes;
    temp.ano = this->ano - aux.ano;
    temp.hora = this->hora - aux.hora;
    temp.minuto = this->minuto - aux.minuto;
    return temp;
}
Run Code Online (Sandbox Code Playgroud)

现在,我只是在测试它是否计算出正确的时间,我写了这段代码:

aux = new Data;
Data *teste = new Data(7, 7, 2016, 22, 41);
Data * resultado = teste - aux;
resultado->ImprimeData();
Run Code Online (Sandbox Code Playgroud)

PS.函数"ImprimeData()"用于打印结果.但在第三行它给我一个错误.首先它表示tipo'long long'的值不能用于初始化'Data*'类型的entety,然后它表示无法从_int64转换为Data*.

Gre*_*lOz 5

这条线

Data * resultado = teste - aux;
Run Code Online (Sandbox Code Playgroud)

应该

Data resultado = *teste - *aux;
Run Code Online (Sandbox Code Playgroud)

第一个是减去两个指针值.第二个是调用你的operator -超载.

你也应该改变

resultado->ImprimeData();
Run Code Online (Sandbox Code Playgroud)

resultado.ImprimeData();
Run Code Online (Sandbox Code Playgroud)

  • @ilotXXI,无需侮辱.只是帮助noobie.他会明白的. (3认同)