定义语句需要声明C ++

时间:2015-04-10 17:58:25

标签: visual-studio c++11 ifndef

好的,我已经缩小了与#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:语法错误:&#39;}&#39;

     

错误2错误C2143:语法错误:缺少&#39 ;;&#39;之前&#39;}&#39;

     

4智能感知:预期声明

     

块引用

错误也是突出显示的     }; 在最后。

1 个答案:

答案 0 :(得分:3)

问题在于#endif指令位于类的定义内(在};代码之前),因此第二个包含此头文件将仅包含{{1代码导致你得到的错误。

BTW,您可以在文件开头使用#pragma once而不是};模式,而效果相同。您可以在here中使用包含警戒来阅读有关pragma的更多信息。