Перегрузка оператора: вычитание с двоичным "-" не найдено глобального оператора, который принимает тип _____ (или нет приемлемого преобразования)
Я пытаюсь написать код, который вычисляет регистрационный взнос, читая файл с помощью eof(). Однако, когда я пытаюсь скомпилировать, я получаю одну ошибку, то есть C2677, что означает, что двоичный "-" не нашел глобального оператора. Я посмотрел, как это исправить, но я не понимаю. Вот мой код:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
ifstream inFile;
ofstream outFile;
string VIN, make, model, type, year;
string truck = "TRUCK";
double basefee, weight;
double tax = 0.065;
double highwayfund = 2.0;
int age;
double discount;
inFile.open("VehicleInput.txt");
outFile.open("VehicleOutput.txt");
while (!inFile.eof())
{
inFile >> VIN >> make >> model >> type >> year;
inFile >> weight;
age = (2020 - year);
weight = 12000;
discount = (age * 0.1);
if (age >= 7)
{
discount = 0.7;
}
if ((type == "CAR") || (type == "SUV"))
{
basefee = (100 - ((100.0 * tax) - (100 * discount)) + highwayfund);
}
if (type == "BUS")
{
basefee = (200 - ((200.0 * tax) - (200 * discount)) + highwayfund);
}
if (type == "TRUCK")
{
basefee = (500 - ((500.0 * (0.22 + tax)) - (500 * discount)) + highwayfund);
}
outFile << " " << VIN << " " << make << " " << model << " " << year;
if (weight > 12000) outFile << weight;
outFile << "$ " << basefee << endl;
}
return 0;
}
1 ответ
Проблема в этой строке:
age = (2020 - year);
age
является .
2020
является внутр.
year
вы объявили как строку.
string VIN, make, model, type, year;
int age;
Это именно то, что говорит вам ошибка. Здесь нет
operator-
который занимает
int
а также
string
.