C++ c++;获取预期的对象创建错误;

C++ c++;获取预期的对象创建错误;,c++,C++,在下面的程序中,我得到了如下错误 Addtime.cpp:在函数“int main()”中: Addtime.cpp:41:6:错误:应为“;”在“时间1”之前 我彻底检查了程序,没有发现错误。请帮帮我 #include <iostream> #include<string> using namespace std; class time { public: int hours; int minutes; int

在下面的程序中,我得到了如下错误 Addtime.cpp:在函数“int main()”中: Addtime.cpp:41:6:错误:应为“;”在“时间1”之前 我彻底检查了程序,没有发现错误。请帮帮我

#include <iostream>
#include<string>
using namespace std;

class time
{
    public:
        int hours;
        int minutes;
        int seconds;

    void showtime()
    {
       cout<<"time is "<<hours <<"hours:"<<minutes<<"minutes:"<<seconds<<"seconds \n";
    }

    time(int temph,int tempm,int temps)
    {
        hours=temph;
        minutes=tempm;
        seconds=temps;
    }
    time operator +(time t2)
    {
        int temph; 
        int tempm; 
        int temps;

        temph = hours + t2.hours;
        tempm = minutes + t2.seconds;
        temps = seconds + t2.minutes;

        tempm = (tempm + temps)/60;
        temps = temps % 60;
        temph = (temph + tempm)/60;

        tempm = tempm % 60;

        return time(temph,tempm,temps);
    }
};

int main()
{
    time time1 (12,15,15);
    cout<<"the first value is";
    time1.showtime();
    time time2(10,30,30);
    cout<<"the second value is";
    time2.showtime();

    time time3;
    time3 = time1 + time2;
    cout<<"the result is";
    time3.showtime();

    time time4;
    time4 = time1 + time2 + time3;
    time4.showtime();

    return 0;
}
#包括
#包括
使用名称空间std;
上课时间
{
公众:
整小时;
整数分钟;
整数秒;
void showtime()
{

cout实际上,它在以下要调用默认构造函数的行处编译失败:

time time3;
....
time time4;
原因是,如果您手动编写任何其他构造函数(在您的情况下:
time(int,int,int)
),编译器将不再为您生成默认构造函数


要解决此问题,您需要进一步为
时间
类添加一个默认构造函数。

实际上,它无法在以下要调用默认构造函数的行中编译:

time time3;
....
time time4;
原因是,如果您手动编写任何其他构造函数(在您的情况下:
time(int,int,int)
),编译器将不再为您生成默认构造函数


要解决这个问题,您需要为
time
类进一步添加一个默认构造函数。

添加一个默认构造函数time(void){/code/};
如果像现在这样声明对象,则需要一个time4;

添加默认构造函数time(void){/code/};
如果您声明了一个类似于此的对象,则需要一个time4;

这里有一个链接,指向在线编译器中您的代码段,在我稍微修改过它之后:

看起来
time
与C标准库中的
time
函数冲突

因此,解决此问题的方法是将类重命名为其他对象(在我称之为
timer
的链接中),或者使用
类时间声明每个实例以消除符号的歧义


请注意,您的变量
time3
time4
尝试使用默认构造函数,因为您添加了一个抑制默认值的三参数构造函数,所以这两个变量都不会编译(在我的示例中,我已经注释掉了它们).

在我稍加修改后,这里有一个链接,指向在线编译器中的代码片段:

看起来
time
与C标准库中的
time
函数冲突

因此,解决此问题的方法是将类重命名为其他对象(在我称之为
timer
的链接中),或者使用
类时间声明每个实例以消除符号的歧义



请注意,您的变量
time3
time4
尝试使用默认构造函数,因为您添加了一个抑制默认值的三参数构造函数,所以这两个变量都不会编译(在我的示例中,我已经注释掉了它们).

请花二十秒的时间缩进您的代码,以便我们可以实际阅读它…这也不是第一次了。Ramraj plz.y您没有插入缩进?!您缺少默认构造函数?可能会隐式包含
time.h
,这将导致在您的类
time
,和
time\t time(time\t*)
请花二十秒的时间缩进您的代码,以便我们可以实际阅读它…这也不是第一次了。Ramraj plz.y您没有插入缩进?!您缺少默认构造函数?可能会隐式包含
time.h
,这将导致在您和你的职业
time
,以及
time\t time(time\t*);
它在另一个服务器上失败line@Slava是的,这是一个错误,但不是被询问的错误。添加默认构造函数仍然无法使示例编译。它在另一个实例上失败line@Slava是的,这是一个错误,但不是被问及的错误。添加默认构造函数仍然不会使示例compile。谢谢兄弟,你的答案正确。但我无法理解你的这句话“注意,你的变量time3和time4试图使用默认构造函数,这是不存在的,因为你添加了一个抑制默认值的三参数构造函数,所以它们都不会编译(在我的示例中,我已经将它们注释掉了)。”。请详细解释。@RamrajSanthanam请简要阅读本文,如果您不添加任何自己的构造函数,编译器将为您创建一个默认的无参数构造函数。您的变量
time3
time4
都是在未向其构造函数传递参数的情况下创建的,因此它们试图使用默认值。但是因为您添加了一个构造函数,所以默认值不存在。如果您想让这类事情正常工作,您需要手动添加一个默认构造函数。尝试取消链接代码中相应行的注释,您将看到将出现的错误类型。感谢brother的宝贵回复。是的,它可以与默认构造函数一起工作。谢谢兄弟,你的答案是正确的。但我无法理解你的这句话“注意,你的变量time3和time4试图使用默认构造函数,这是不存在的,因为你添加了一个3参数构造函数,它抑制了默认值,所以这两个都不会编译(我在我的示例中已经注释掉了它们)。”。请详细解释。@RamrajSanthanam请简要阅读本文,如果您不添加任何自己的构造函数,编译器将为您创建一个默认的无参数构造函数。您的变量
time3
time4
都是在未向其构造函数传递参数的情况下创建的,因此它们试图使用默认值。但是,由于您添加了一个构造函数,该默认值不存在。如果您希望此类操作正常,则需要手动添加一个默认构造函数。请尝试取消链接代码中相应行的注释,然后