不能调用构造函数

Cannot call constructor

本文关键字:构造函数 调用 不能      更新时间:2023-10-16

我必须制作一个显示小时和分钟的计时器,但我得到这个编译错误。

在成员函数 'std::string Timer::toString(( const' 中: timer.h:43:17:错误:无法直接调用构造函数"Timer::Timer" [-允许]

我不明白为什么会发生这种情况或这意味着什么。请帮忙。 我认为这与toString功能有关,但我不确定

#ifndef TIMER_H_
#define TIMER_H_
#include <string>
#include <sstream>

class Timer {
private:
int horas;
int minutos;
public:
Timer();
Timer(int, int);
Timer(const Timer&);
int getHoras() const;
int getMinutos() const;
void operator =(const Timer&);
void operator +=(const Timer&);
std::string toString() const;

};
std::string Timer::toString() const {
std::stringstream aux;
Timer :: Timer() : horas(0), minutos(0) {}
Timer :: Timer(int hh, int mm) {
if(mm > 60){
horas = hh + (mm/60);
}else {
horas = hh;
minutos = mm;
}
}
Timer :: Timer(const Timer  &source) : horas(source.horas), minutos(source.minutos) {}
int Timer :: getHoras() const {
return horas;
}
int Timer :: getMinutos() const {
return minutos;
}
void Timer :: operator =(const Timer &source) {
horas = source.horas;
minutos = source.minutos;
}
void Timer :: operator +=(const Timer &source) {
if((source.minutos+minutos) > 60){
horas = horas + 1;
minutos = (minutos + source.minutos) % 60;
}else {
minutos = minutos + source.minutos;
}
horas = (horas + source.horas)%24;
}
bool operator ==(const Timer &izq, const Timer &der) {
return ( (izq.getHoras() == der.getHoras())&&(izq.getMinutos() == der.getMinutos() );
}
bool operator >(const Timer &izq, const Timer &der) {
if(izq.getHoras() > der.getHoras()){
return true;
}else if(izq.getHoras() == der.getHoras()){
if(izq.getMinutos() > der.getMinutos()){
return true;
}
}
return false;
}
#endif

函数定义中缺少}。此外,如果函数的类型声明为string.然后,您必须返回string

std::string Timer::toString() const {
std::stringstream aux;
std::string youMustReturnAString;
return youMustReturnAString;
}

您还缺少第 77 行末尾的)

bool operator ==(const Timer &izq, const Timer &der) {
return ((izq.getHoras() == der.getHoras()) && (izq.getMinutos() == der.getMinutos()));
}