g ++找不到我的头文件?

时间:2016-01-03 15:56:26

标签: c++

我正在尝试使用g ++在覆盆子pi上用C ++编译一个简单的程序。但我一直认为头文件不存在。我认为该文件确实存在,并且它与源文件也在同一文件夹中。

有没有人有任何想法?我已经覆盖了十几个谷歌搜索的前4页而没有运气。

我在正确的文件夹中使用的命令是:

g++ -v -std=c++0x test.cpp timehandler.cpp -o Test

TEST.CPP:

#include <iostream>

#include "timehandler.h"

int main ()
{
    TimeHandler tOne("2015-12-12 20:00");
    TimeHandler tTwo("2015-12-12 21:00");

    cout << tOne.timeDiff(tTwo) << endl;

    return 0;
}

timehandler.cpp:

#include "timehandler.h"

using namespace std;

//Converts a timestring with "YYYY-MM-DD HH:MM:SS" to a time_t
TimeHandler::TimeHandler(std::string timeString)
{
  strptime(timeString.c_str(), "%Y-%m-%d %H:%M:%S", &mTimeInfo);
  mTime = mktime(timeInfo);
}

int TimeHandler::getTime()
{
  return mTime;
}

double TimeHandler::timeDiff(TimeHandler t)
{
    return difftime(this->getTime(),t.getTime());
}

timehandler.h:

#ifndef TIMEHANDLER_H
#define TIMEHANDLER_H

#include <string>
#include <time>

class TimeHandler
{
public:
    //Constructor
    TimeHandler(std::string timeString);

    //Public functions
    time_t getTime();
    double timeDiff(TimeHandler t);

private:
   //Private members
   struct tm mTimeInfo;
   time_t mTime;
};

#endif

1 个答案:

答案 0 :(得分:1)

尝试编译代码显示有几个错误:

  1. 返回类型不一致:

    在您的cpp文件中

    int TimeHandler::getTime()
    

    但这应该像你的头文件一样:

    time_t TimeHandler::getTime()
    
  2. 我还必须将#include <time>更改为ctime(或time.h):

    #include <ctime>
    
  3. 构造函数int TimeHandler::getTime()的最后一行参数不正确,应为:

    mTime = mktime(&mTimeInfo);
    
  4. 在主要内容中,您遗漏了stdcout(或endl)的名称空间using namespace std

    std::cout << tOne.timeDiff(tTwo) << std::endl;