在我的项目中,我有一个与时间一起工作的课程,它的声明如下:
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 = day,mes = month,ano = year,hora = hour ....(portuguese)
在某些时候,我必须计算两个不同时间之间的差异。所以我做了这个简单的操作符 - :
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();
聚苯乙烯。函数“ImprimeData()”用于打印结果。 但在第三行它给我一个错误。首先,它表示tipo'long long'的值不能用于初始化'Data *'类型的entety,然后它表示无法从_int64转换为Data *。
答案 0 :(得分:5)
这一行
Data * resultado = teste - aux;
应该是
Data resultado = *teste - *aux;
第一个是减去两个指针值。第二个是调用operator -
重载。
您还应该更改
resultado->ImprimeData();
到
resultado.ImprimeData();
答案 1 :(得分:-1)
你的睾丸是一个指针,就像你的箴言一样。
由于我的睾丸被认为更像是一个容器和/或工厂,因此有点过时了。