Определите оператор ожидаемого объявления C++

Итак, я сузил проблему, связанную с #ifndef и / или #define ключевые слова.

У меня есть 2 других .h файлы и единственное различие между теми, без ошибок и без, это подсветка синтаксиса на #ifndef EMPLOYEE_H и #define EMPLOYEE_H обменивается на файл с ошибками.

Хотя я не уверен, что это значит (я использую Visual Studio), но все мои другие определенные операторы становятся белыми, как будто они включены в некоторые.

Я не уверен, что не так!

Вот мой код:

//Specification file for the Employee Class
#ifndef EMPLOYEE_H
#define EMPLOYEE_H

#include <string>

using namespace std;


class Employee

{

protected:
//Employee name
string name;
//Required Training hours
string emNum;
//Completed training hours
string hireDate;


public:
//Default Constructor
Employee()
{
    name = " ";
    emNum = " ";
    hireDate = " ";
}

//Constructor
Employee(string aName, string aNumber, string aDate)
{
    name = aName;
    emNum = aNumber;
    hireDate = aDate;
}

//mutators
void setName(string empName) { name = empName; }
void setEmployeeNumber(string empNumber) { emNum = empNumber; }
void setHireDate(string date) { hireDate = date; }

//accessors
string getName() const { return name; }
string getEmployeeNumber() const { return emNum; }
string getHireDate() const { return hireDate; }


#endif



};

Мои ошибки:

Ошибка 1 ошибка C2059: синтаксическая ошибка: '}'

Ошибка 2, ошибка C2143: синтаксическая ошибка: отсутствует ';' до '}'

4 IntelliSense: ожидается объявление

Blockquote

Также ошибка подсвечивает };в самом конце.

1 ответ

Проблема с #endif директива, которая находится внутри определения класса (до }; код), таким образом, второе включение этого заголовочного файла будет включать только }; код, вызывающий ошибки, которые вы получили.

Кстати, вместо использования #ifndef шаблон, который вы можете просто использовать #pragma once в начале вашего файла, который имеет тот же эффект. Вы можете прочитать больше о прагме один раз против использования включенных охранников здесь.

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