无法从“_int64”转换为 'Data *'
Cannot convert from '_int64' to 'Data *'
在我的项目中,我有一个 class 来处理时间,它是这样声明的:
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);
};
dia = 日,mes = 月,ano = 年,hora = 小时....(葡萄牙语)
并且在某些时候我必须计算两个不同时间之间的差异。所以我做了这个简单的运算符 -:
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();
Ps。函数 "ImprimeData()" 是打印结果。
但是在第三行它给了我一个错误。首先它说 tipo 'long long' 的值不能用于初始化类型 'Data *' 的实体,然后它说不能从 _int64 转换为 Data *.
这一行
Data * resultado = teste - aux;
应该是
Data resultado = *teste - *aux;
首先是减去两个指针值。第二个是调用您的 operator -
重载。
你也应该改变
resultado->ImprimeData();
至
resultado.ImprimeData();
你的睾丸是一个指针,你的辅助也是。
这有点离谱,因为我的睾丸更像是一个容器 and/or 工厂。
在我的项目中,我有一个 class 来处理时间,它是这样声明的:
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);
};
dia = 日,mes = 月,ano = 年,hora = 小时....(葡萄牙语)
并且在某些时候我必须计算两个不同时间之间的差异。所以我做了这个简单的运算符 -:
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();
Ps。函数 "ImprimeData()" 是打印结果。 但是在第三行它给了我一个错误。首先它说 tipo 'long long' 的值不能用于初始化类型 'Data *' 的实体,然后它说不能从 _int64 转换为 Data *.
这一行
Data * resultado = teste - aux;
应该是
Data resultado = *teste - *aux;
首先是减去两个指针值。第二个是调用您的 operator -
重载。
你也应该改变
resultado->ImprimeData();
至
resultado.ImprimeData();
你的睾丸是一个指针,你的辅助也是。
这有点离谱,因为我的睾丸更像是一个容器 and/or 工厂。