在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