In meinem Projekt habe ich eine Klasse mit der Zeit zu arbeiten, es wie folgt deklariert wird:kann nicht von ‚_int64‘ auf ‚Daten *‘ konvertieren
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 = Tag, mes = Monat, ano = Jahr, hora = hour .... (portugisisch)
Und an einem bestimmten Punkt muss ich den Unterschied zwischen zwei verschiedenen Zeiten berechnen. Also habe ich diese einfache Operator gemacht -:
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;
}
Nun, ich habe nur testen, ob es die richtige Zeit berechnet, schrieb ich diesen Frieden Code:
aux = new Data;
Data *teste = new Data(7, 7, 2016, 22, 41);
Data * resultado = teste - aux;
resultado->ImprimeData();
Ps. Die Funktion "ImprimeData()" dient zum Ausdrucken des Ergebnisses. Aber in der dritten Zeile gibt es mir einen Fehler. Zuerst sagt es, dass ein Wert von tipo 'long long' nicht verwendet werden kann, um einen Eintrag vom Typ 'Data *' zu initialisieren, und dann sagt es, dass es nicht von _int64 in Data * konvertiert werden kann.
Warum sollten Sie erwarten, dass die Datentypumwandlung in Ordnung sein sollte? –
Es gibt einige Probleme in der Zeile 'Data * resultado = teste - aux;'. Der Subtraktionsoperator erwartet nicht, dass einer der Operanden ein Zeiger ist und gibt keinen Zeiger zurück. – tsandy
Stop. Wenn 'aux' und' teste' Zeiger sind, warum kompiliert dieser Code nicht? Es ist eine korrekte Syntax (keine Semantik). Was ist 'Aux'? – ilotXXI