Метод int в классе C ++ «Требования и идентификатор» - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь создать класс, содержащий некоторые математические операции из справочника по математическим таблицам CR C, который у меня есть, при создании одной из функций я получил странную ошибку, которой раньше не было. Код и для cpp, и для заголовка приведены ниже:

//Header File
#include <iostream>
#include <cmath>
#include <string>
#define int "CRCMathLib_H"

using namespace std;

class CRCMathLib
{
public:
    int DoReturn_Totient(int Toter); //Error comes from here when trying to declare as an int
};

//CPP Class File
#include "CRCMathLib.h"
#include <iostream>
#include <cmath>
#include <string>

using namespace std;

int CRCMathLib::DoReturn_Totient(int Toter)
{

    return 0;
}

//CPP Main File
#include <iostream>
#include <cmath>
#include <string>
#include "CRCMathLib.h"

using namespace std;

int main()
{
    return 0;
}

Основной файл пока ничего не делает, поскольку это совершенно новый файл для этих операций, я думаю, это может быть ошибка предварительной обработки, и она не обнаруживается в операторе int, поскольку я запустил его на другом P C с VS, и он смог прочитать оператор. все поможет Также он запрашивал удаление заголовочного файла, поэтому я поместил туда int, возможно, это проблема? удаление его возвращает ошибку отсутствия декларации.

1 Ответ

1 голос
/ 24 апреля 2020

В вашем .h удалите #define int "CRCMathLib_H", который, скорее всего, является опечаткой, замените его на

#include <iostream>
#include <cmath>
#include <string>
#pragma once

. #pragma once гарантирует, что вы можете безопасно включить ваш .h из файла реализации cpp и main. cpp

Вы неправильно поняли, что защитная защита обычно выполняется с помощью

ifndef CRCMathLib_H
#define CRCMathLib_H
// all of you .h file delcaration
#endif

. Это можно легко заменить оператором #pragma once в начале файла

Подробнее об этом здесь: https://www.learncpp.com/cpp-tutorial/header-guards/

...