MS VC中的错误C2143(缺少;在命名空间之前)包括

Rus*_*ell 9 c++ visual-studio

我非常困惑,为什么我突然得到这个奇怪的错误:

Time.h是一个非常简单的类,它在类描述的末尾有一个分号,所以我很确定我的代码在这里是正确的..然后我得到相同的错误:Microsoft Visual Studio 10.0\VC\include \记忆..任何想法!?!?谢谢!

编译器输出

1>ClCompile:
1>  Stop.cpp
1>c:\projectnextbus\Time.h(17): error C2143: syntax error : missing ';' before 'using'
1>c:\projectnextbus\Time.h(17): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>  NextBusDriver.cpp
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\memory(16): error C2143: syntax error : missing ';' before 'namespace'
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\memory(16): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Run Code Online (Sandbox Code Playgroud)

更新:无法发布所有代码,因为这是针对学校项目的,我们不应该在提交之前发布,但小片段应该没问题.

time.h中

#ifndef TIME_HPP
#define TIME_HPP

#include <string>
#include <sstream>

using namespace std;

class Time {
// Defines a time in a 24 hour clock

public:
    // Time constructor
    Time(int hours = 0 , int minutes= 0);

    // POST: Set hours int
    void setHours(int h);

    // POST: Set minutes int
    void setMinutes(int m);

    // POST: Returns hours int
    int getHours();

    // POST: Returns minutes int
    int getMinutes();

    // POST: Returns human readable string describing the time
    // This method can be overridden in inheriting classes, so should be virtual so pointers will work as desired
    string toString();

private: 
    string intToString(int num);
    // POST: Converts int to string type

    int hours_;
    int minutes_;

};

#endif
Run Code Online (Sandbox Code Playgroud)

DepartureTime.h(继承类)

#ifndef DEPARTURE_TIME_HPP
#define DEPARTURE_TIME_HPP

#include <string>
#include "Time.h"

using namespace std;

class DepartureTime: public Time {
public:
    // Departure Time constructor
    DepartureTime(string headsign, int hours=0, int minutes=0) : Time(hours, minutes), headsign_(headsign) { }

    // POST: Returns bus headsign
    string getHeadsign();

    // POST: Sets the bus headsign
    void setHeadsign(string headsign);

    // POST: Returns human readable string describing the departure
    string toString();

private:
    // Class variables
    string headsign_;
};
#endif
Run Code Online (Sandbox Code Playgroud)

OJ.*_*OJ. 16

发生这种情况时,一个包含文件具有在一个错误(或缺少分号)结束的文件和该文件之前,另一个立刻就包含.生成的错误表示第二个包含文件而不是第一个包含文件存在问题.因此,作为一个起点,请确保,如果您有一个在Time.h之前包含的文件,那么它中没有任何错误.

粘贴.h和.cpp文件的内容肯定会有所帮助,而不仅仅是错误消息.