我正在尝试使用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
答案 0 :(得分:1)
尝试编译代码显示有几个错误:
返回类型不一致:
在您的cpp文件中:
int TimeHandler::getTime()
但这应该像你的头文件一样:
time_t TimeHandler::getTime()
我还必须将#include <time>
更改为ctime
(或time.h
):
#include <ctime>
构造函数int TimeHandler::getTime()
的最后一行参数不正确,应为:
mTime = mktime(&mTimeInfo);
在主要内容中,您遗漏了std
和cout
(或endl
)的名称空间using namespace std
:
std::cout << tOne.timeDiff(tTwo) << std::endl;