在CPP中如何处理ctime包含在class范围内?
How to deal with ctime includes within the scope of a class in CPP?
我想在 C++ 中的 class 范围内使用 <ctime>
。但是,每当我尝试编译以下 class 时,我都会收到错误消息:
error: 'time' cannot be used as a function
time_t now = time(0);
我认为这可能与我试图在 Session
class 中调用该函数有关,因为我已经设法调用了 time()
函数在 main()
函数中。
我做错了什么?
Session.h
#ifndef _SESSION_H_
#define _SESSION_H_
#include <string>
#include <ctime>
class Session
{
private:
std::string language;
time_t date;
time_t time;
public:
Session(std::string language, time_t date = NULL, time_t time = NULL);
~Session();
};
#endif
Session.cpp
#include <ctime>
#include "Session.h"
Session::Session(std::string language, time_t date, time_t time) : language{language}, date{date}, time{time}
{
if (date == NULL)
{
time_t now = time(0);
tm *ltm = localtime(&now);
}
}
Session::~Session() {}
您声明了一个与函数名称 time
同名的构造函数参数:
Session::Session(std::string language, time_t date, time_t time)
^
在构造函数块范围内,参数隐藏同名函数(以及class定义中声明的同名数据成员)。
因此,使用函数的限定名称:
time_t now = ::time(0);
要访问数据成员,请使用带指针的表达式 this
,例如 this->time
。
我想在 C++ 中的 class 范围内使用 <ctime>
。但是,每当我尝试编译以下 class 时,我都会收到错误消息:
error: 'time' cannot be used as a function
time_t now = time(0);
我认为这可能与我试图在 Session
class 中调用该函数有关,因为我已经设法调用了 time()
函数在 main()
函数中。
我做错了什么?
Session.h
#ifndef _SESSION_H_
#define _SESSION_H_
#include <string>
#include <ctime>
class Session
{
private:
std::string language;
time_t date;
time_t time;
public:
Session(std::string language, time_t date = NULL, time_t time = NULL);
~Session();
};
#endif
Session.cpp
#include <ctime>
#include "Session.h"
Session::Session(std::string language, time_t date, time_t time) : language{language}, date{date}, time{time}
{
if (date == NULL)
{
time_t now = time(0);
tm *ltm = localtime(&now);
}
}
Session::~Session() {}
您声明了一个与函数名称 time
同名的构造函数参数:
Session::Session(std::string language, time_t date, time_t time)
^
在构造函数块范围内,参数隐藏同名函数(以及class定义中声明的同名数据成员)。
因此,使用函数的限定名称:
time_t now = ::time(0);
要访问数据成员,请使用带指针的表达式 this
,例如 this->time
。