Перегрузка оператора: вычитание с двоичным "-" не найдено глобального оператора, который принимает тип _____ (или нет приемлемого преобразования)

Я пытаюсь написать код, который вычисляет регистрационный взнос, читая файл с помощью 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.

Другие вопросы по тегам