Что-то не так с тем, как я создал этот класс? - PullRequest
0 голосов
/ 06 февраля 2020

Я получаю сообщение об ошибке с cpp, которое спрашивает, забыл ли я включить stdafx.h, что я и сделал в заголовке, код ошибки C1010.

Полная ошибка чтения: неожиданный конец файла при поиске предварительно скомпилированного заголовка. Вы забыли добавить '#include "stdafx.h" к своему источнику?

Сначала у меня есть файл заголовка, который определяет некоторые основные функции c для калькулятора. Которые принимают аргументы при вызове.

#pragma once
#include <iostream>
#include <string>
#include "stdafx.h"

using namespace std;

class Functions
{
public:
    Functions() {};

    float add(float a, float b);
    float subtract(float a, float b);
    float multiply(float a, float b);
    float divide(float a, float b);

private:
    float answer;
};

Тогда есть cpp, который просто вычисляет 2 аргумента и возвращает ответ.

#pragma once
#include "Functions.h"

float Functions::add(float a, float b)
{
    answer = a + b;
    return answer;
}

float Functions::subtract(float a, float b)
{
    answer = a - b;
    return answer;
}

float Functions::multiply(float a, float b)
{
    answer = a * b;
    return answer;
}

float Functions::divide(float a, float b)
{
    answer = a / b;
    return answer;
}

Пожалуйста, объясните простыми словами, я не очень хорош в кодировании.

1 Ответ

0 голосов
/ 06 февраля 2020

stdafx.h - это предварительно скомпилированный заголовок, используемый Visual Studio, вы можете удалить его.

Редактировать: Оказывается, это работает, только если вы отключаете предварительно скомпилированные заголовки в Visual Studio. Они по умолчанию включены в visual studio.

Если вы хотите оставить их включенными, они должны быть включены до того, как любые другие включают .

Так что ваши директивы препроцессора должны быть :

#include "stdafx.h"
#include <iostream>
#include <string>
...