gpt4 book ai didi

c++ 当前日期和指针问题!

转载 作者:太空狗 更新时间:2023-10-29 23:37:59 25 4
gpt4 key购买 nike

在 C++ 中 ..

首先,我需要创建一个 Date d() 类的构造函数来创建当前日期。我应该怎么做?

之后我遇到了这个程序的问题:

class Noleggio
{
public:
//Noleggio(unsigned f, unsigned n, unsigned c) : inizio() { film = f; copia = n; cliente = c; restituito = false; }
bool restituito;
unsigned addebito;
//unsigned film, copia, cliente;
Data inizio;
Data restituzione;
CopiaFilm* copia;
Film* film;
Cliente* cliente;
};

class VideoNoleggio
{
public:
VideoNoleggio (string n) : nome(n) {}
void InserisciFilm (Film* f);
void InserisciCliente (Cliente* c);
void CreaCopiaFilm (string s, Film* f);
void NoleggioCopia (unsigned n, Film* f, Cliente* c);
void RestituzioneCopia (unsigned n, Film* f, unsigned t);
int CercaFilm (Film* f) const;
int CercaCliente (Cliente* c) const;
int CercaUltimaCopia(Film* f) const;
int CercaNoleggio (unsigned n, Film* f) const;
string Nome() const { return nome; }
unsigned NumeroFilm() const { return film.size(); }
unsigned NumeroNoleggi() const { return noleggi.size(); }
Film* QualeFilm (unsigned i) const { return noleggi[i].film; }
string QualeTitolo (unsigned i) const { return film[i]->Titolo(); }
private:
string nome;

vector<Noleggio> noleggi;
vector<CopiaFilm> copie;
vector<Film*> film;
vector<Cliente*> clienti;
};

在函数中

void VideoNoleggio::RestituzioneCopia (unsigned n, Film* f, unsigned t)
{
int i = CercaUltimaCopia(f);
assert (copie[i].numero >= n );
assert ( !(noleggi[i].restituito) );
Data d();
int j = CercaNoleggio(n,f);
assert ( d >= noleggi[j].inizio );
noleggi[j].restituzione = d;
noleggi[j].restituito = true;
noleggi[j].addebito = t*( d - noleggi[j].inizio + 1 );
// clienti[noleggi[j]->cliente]->Prelievo(noleggi[j]->addebito);
}

编译器在这里返回错误 assert ( d >= noleggi[j].inizio ) 它似乎不喜欢 noleggi[j].inizio 作为一个好的参数...(原因如果我尝试 d >= d 它会起作用 ---> 我猜这不是运算符重载问题)

在 data.h friend bool operator >= (const Data& d1, const Data& d2);

有什么建议吗?

最佳答案

问题是线路

Data d();

这被解释为函数声明(即名为 d 的函数,不带参数并返回 Data)。

改成

Data d;

或者,如果它是一个 POD 结构并且您希望它进行值初始化

Data d = Data();

至于如何实现构造函数,那要看你的环境了;没有标准的 C++ 日期/时间库。最便携的方法可能是使用 Boost.Date_Time ,正如 daramarak 所建议的那样,但我自己并没有使用过它,所以我只能向你指出文档。在 Posix 系统上,您可以使用 time() 函数返回自定义日期以来的秒数,以及 ctime() 和相关函数将其分解为年,几个月等。Windows 可能有类似的东西,但我不知道。

关于c++ 当前日期和指针问题!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3094151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com