zyangyangyang123 2023-04-05 14:34 采纳率: 100%
浏览 13
已结题

求解答c++中的报错问题

一直报错[Error] ld returned 1 exit status,为什么呀


#include<iostream>
using namespace std; 
class Time        //声明Time类
{
public:
    Time( int = 0, int = 0, int = 0 ); // 带默认参数的构造函数
    
        // set functions
    void setTime( int, int, int );    // 设置hour, minute, second
    void setHour( int );            // 设置hour (确保数据在合理范围)
    void setMinute( int );        // 设置minute (确保数据在合理范围)
    void setSecond( int );        // 设置second (确保数据在合理范围)

    // get functions
    int getHour();        // 返回 hour
    int getMinute();    // 返回 minute
    int getSecond();    // 返回 second
    
    void printUniversal();    // 按24小时格式输出时间:23:56:12     
    void printStandard();    // 按12小时格式输出时间:11:56:12 (PM) 或 9:23:55(AM)
private:
    int hour;    // 0 - 23 (24小时格式)
        int minute; // 0 - 59
        int second; // 0 - 59
}; // Timel类定义结束
void Time::setTime(int hour,int minute,int second)
{
    setHour(hour);
    setMinute(minute);
    setSecond(second);
}
void Time::setHour(int inh)
{
    if (inh >= 0 && inh < 24)
        hour = inh;
    else
        cout<<"hour 必须为 0-24"<<endl; 
}
void Time::setMinute(int m)
{
    if (m >= 0 && m < 60)
        minute = m;
    else
        cout<<"minute 必须为 0-60"<<endl;
}
void Time::setSecond(int s)
{
    if (s >= 0 && s < 60)
        second = s;
    else
        cout<<"second 必须为 0-60"<<endl;
}
int Time::getHour()
{
    return hour;
}
int Time::getMinute()
{
    return minute;
}
int Time::getSecond()
{
    return second;
}
void Time::printUniversal()
{
    cout<<hour<<":"<<minute<<":"<<second<<endl;
}
void Time::printStandard()
{
    if(hour<12)
    {
    cout<<hour<<":"<<minute<<":"<<second<<"(AM)";
    }
    else
    {
    int hour_pm;
    hour_pm=hour-12;
    cout<<hour_pm<<":"<<minute<<":"<<second<<"(PM)";
    }
}
void test01()
{
    Time t1(23,56,12);
    Time t2(11,56,12);
    Time t3(21,23,55);
    t1.printUniversal();
    t2.printStandard();
    t3.printStandard();
    
}
int main()
{
    test01();
}
  • 写回答

2条回答 默认 最新

  • a5156520 2023-04-05 14:45
    关注

    构造函数声明后还需要定义下,补上构造函数的定义应该就可以了。

    修改如下:

    参考链接:


     
    #include<iostream>
    using namespace std; 
    class Time        //声明Time类
    {
    public:
        Time( int = 0, int = 0, int = 0 ); // 带默认参数的构造函数
        
            // set functions
        void setTime( int, int, int );    // 设置hour, minute, second
        void setHour( int );            // 设置hour (确保数据在合理范围)
        void setMinute( int );        // 设置minute (确保数据在合理范围)
        void setSecond( int );        // 设置second (确保数据在合理范围)
     
        // get functions
        int getHour();        // 返回 hour
        int getMinute();    // 返回 minute
        int getSecond();    // 返回 second
        
        void printUniversal();    // 按24小时格式输出时间:23:56:12     
        void printStandard();    // 按12小时格式输出时间:11:56:12 (PM) 或 9:23:55(AM)
    private:
        int hour;    // 0 - 23 (24小时格式)
            int minute; // 0 - 59
            int second; // 0 - 59
    }; // Timel类定义结束
    // https://blog.csdn.net/qq_43403759/article/details/113391196
    Time::Time( int hour,int minute,int second){ // 类构造函数的定义 
        setTime(hour,minute,second); 
    }
    
    void Time::setTime(int hour,int minute,int second)
    {
        setHour(hour);
        setMinute(minute);
        setSecond(second);
    }
    void Time::setHour(int inh)
    {
        if (inh >= 0 && inh < 24)
            hour = inh;
        else
            cout<<"hour 必须为 0-24"<<endl; 
    }
    void Time::setMinute(int m)
    {
        if (m >= 0 && m < 60)
            minute = m;
        else
            cout<<"minute 必须为 0-60"<<endl;
    }
    void Time::setSecond(int s)
    {
        if (s >= 0 && s < 60)
            second = s;
        else
            cout<<"second 必须为 0-60"<<endl;
    }
    int Time::getHour()
    {
        return hour;
    }
    int Time::getMinute()
    {
        return minute;
    }
    int Time::getSecond()
    {
        return second;
    }
    void Time::printUniversal()
    {
        cout<<hour<<":"<<minute<<":"<<second<<endl;
    }
    void Time::printStandard()
    {
        if(hour<12)
        {
        cout<<hour<<":"<<minute<<":"<<second<<"(AM)"<<endl;
        }
        else
        {
        int hour_pm;
        hour_pm=hour-12;
        cout<<hour_pm<<":"<<minute<<":"<<second<<"(PM)"<<endl;
        }
    }
    void test01()
    {
        Time t1(23,56,12);
        Time t2(11,56,12);
        Time t3(21,23,55);
        t1.printUniversal();
        t2.printStandard();
        t3.printStandard();
        
    }
    int main()
    {
        test01();
    }
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月13日
  • 已采纳回答 4月5日
  • 创建了问题 4月5日

悬赏问题

  • ¥30 数字信号处理实验报告
  • ¥15 ensp路由器启动不了一直报#
  • ¥50 安卓10如何在没有root权限的情况下设置开机自动启动指定app?
  • ¥15 ats2837 spi2从机的代码
  • ¥200 wsl2 vllm qwen1.5部署问题
  • ¥100 有偿求数字经济对经贸的影响机制的一个数学模型,弄不出来已经快要碎掉了
  • ¥15 数学建模数学建模需要
  • ¥15 已知许多点位,想通过高斯分布来随机选择固定数量的点位怎么改
  • ¥20 nao机器人语音识别问题
  • ¥15 怎么生成确定数目的泊松点过程