C++ 无法从“\u int64”转换为“数据*”

C++ 无法从“\u int64”转换为“数据*”,c++,class,time,struct,converter,C++,Class,Time,Struct,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 ImprimeD

在我的项目中,我有一个与时间相关的类,声明如下:

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);
};
日=日,月=月,年=年,时=小时。。。。葡萄牙人

在某个时刻,我必须计算两个不同时间的差。所以我做了一个简单的操作符-:

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;
}
现在,我正在测试它是否计算出正确的时间,我编写了以下代码:

aux = new Data;
Data *teste = new Data(7, 7, 2016, 22, 41);
Data * resultado = teste - aux;
resultado->ImprimeData();
另外,impimedata的功能是打印结果。 但在第三行,它给了我一个错误。首先,它表示不能使用tipo“long long”值来初始化“Data*”类型的EntEntity,然后它表示不能从_int64转换为Data*

此行

Data * resultado = teste - aux;
应该是

Data resultado = *teste - *aux;
第一个是减去两个指针值。第二个是呼叫您的操作员-过载

你也应该改变

resultado->ImprimeData();

这条线

Data * resultado = teste - aux;
应该是

Data resultado = *teste - *aux;
第一个是减去两个指针值。第二个是呼叫您的操作员-过载

你也应该改变

resultado->ImprimeData();


您的teste是指针,aux也是指针


这有点不恰当,因为我的测试仪更像是一个容器和/或工厂。

您的测试仪和aux都是指针


这有点不恰当,因为我的测试仪更像是一个容器和/或工厂。

为什么您认为数据类型转换应该是可以的?在data*resultado=teste-aux;行中有几个问题;。减法运算符不希望任何一个操作数都是指针,也不返回指针.Stop。如果aux和teste是指针,为什么这段代码不编译?这是正确的语法,而不是语义。什么是aux?@ilotXXI,这是因为他在减去两个指针,并试图将int64值分配给一个没有强制转换的指针。然而,这是在转移视线,因为他实际上想做的是给他的操作员打电话——过载。为此,他需要使用我下面的答案。@ilotXXI。错误的Pointer-Pointer=INT为什么您认为数据类型转换应该是正常的?在data*resultado=TEST-aux;行中有几个问题;。减法运算符不希望任何一个操作数都是指针,也不返回指针.Stop。如果aux和teste是指针,为什么这段代码不编译?这是正确的语法,而不是语义。什么是aux?@ilotXXI,这是因为他在减去两个指针,并试图将int64值分配给一个没有强制转换的指针。然而,这是在转移视线,因为他实际上想做的是给他的操作员打电话——过载。为此,他需要使用我下面的答案。@ilotXXI。错误的Pointer-Pointer=inti如果我在*teste中的第一个指针上出现错误,表示无法从“Data”转换为“Data*”@CésarPereira,因为您还需要从数据*结果中删除*来完成此任务。但是我在打印结果时出错了。在resultado->impimedata行中,我得到一个表达式必须具有指针类型。那是指resultado@C当然,只要将->更改为a。就像我上面的编辑所显示的那样。@ilotXXI,不需要侮辱。帮我解决这个问题。他会明白的。如果我这么做的话,第一个指针在*teste中出现错误,表示无法从'Data'转换为'Data*。@CésarPereira,因为您还需要从数据*结果中删除*。但是我在打印结果时出错了。在resultado->impimedata行中,我得到一个表达式必须具有指针类型。那是指resultado@C当然,只要将->更改为a。就像我上面的编辑所显示的那样。@ilotXXI,不需要侮辱。帮我解决这个问题。他会得到的。