【发布时间】:2016-11-10 07:07:24
【问题描述】:
在我的项目中,我有一个类来处理时间,它是这样声明的:
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();
附言。函数“ImprimeData()”用于打印结果。 但是在第三行它给了我一个错误。首先它说不能使用tipo 'long long' 的值来初始化'Data *' 类型的实体,然后它说不能从_int64 转换为Data *。
【问题讨论】:
-
你为什么期望数据类型转换应该没问题?
-
Data * resultado = teste - aux;行中有几个问题。减法运算符不期望任一操作数是指针,也不返回指针。 -
停止。如果
aux和teste是指针,为什么这段代码不能编译?这是一个正确的语法(不是语义)。aux是什么? -
@ilotXXI,这是因为他正在减去两个指针并试图将 (int64) 值分配给没有强制转换的指针。然而,这是一个红鲱鱼,因为他实际上想要做的是调用他的
operator-过载。为此,他需要在下面使用我的答案。 -
@ilotXXI。错误的。
Pointer - Pointer = int
标签: c++ class time struct converter