В моем проекте у меня есть класс для работы со временем, он объявлен как это:не удается преобразовать из «_int64» до «данных *»
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);
};
диам = день, тез = месяц, ано = год, 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;' имеется несколько проблем. Оператор вычитания не ожидает, что любой операнд будет указателем и не вернет указатель. – tsandy
Стоп. Если 'aux' и' teste' являются указателями, почему этот код не компилируется? Это правильный синтаксис (не семантика). Что такое 'aux'? – ilotXXI