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

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


#include
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"<Minute(int m)
{
    if (m >= 0 && m < 60)
        minute = m;
    else
        cout<<"minute 必须为 0-60"<Second(int s)
{
    if (s >= 0 && s < 60)
        second = s;
    else
        cout<<"second 必须为 0-60"<int Time::getHour()
{
    return hour;
}
int Time::getMinute()
{
    return minute;
}
int Time::getSecond()
{
    return second;
}
void Time::printUniversal()
{
    cout<":"<":"<Standard()
{
    if(hour<12)
    {
    cout<":"<":"<"(AM)";
    }
    else
    {
    int hour_pm;
    hour_pm=hour-12;
    cout<":"<":"<"(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();
}

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

修改如下:

参考链接:


http://c.biancheng.net/view/2221.html

 
#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

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/269644
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C程序的一个简单错误[Error] ld returned 1 exit status
  • 除此之外, 这篇博客: g++编译C++程序遇到 error: ld returned 1 exit status 错误的解决方法中的 首先点名解决方法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    可能是数组开太大的原因

    然后没兴趣的可以改一下程序试试,感兴趣的可以看看我的心酸历程

    原本的错误长这样:

    /tmp/ccWem6tZ.o:在函数‘__static_initialization_and_destruction_0(int, int)’中:
    p.cpp:(.text+0x651):  截断重寻址至相符: R_X86_64_PC32 针对 .bss
    p.cpp:(.text+0x664):  截断重寻址至相符: R_X86_64_PC32 针对 .bss
    collect2: error: ld returned 1 exit status
    
    

    在搜索解决方法的过程中也看到有人由于这个错误很绝望,我也没有绝望吧但是真的麻烦了好久。
    一看是全部复制粘贴百度,但是什么都搜不到,后来搜这一句p.cpp:(.text+0x651): 截断重寻址至相符: R_X86_64_PC32 针对 .bss结果还是什么有用的东西都没有;
    还尝试过这一句函数‘__static_initialization_and_destruction_0(int, int)’知道了原来c程序运行的时候,对于函数会先生成一个这个‘__static_initialization_and_destruction_0(int, int)’来虚拟运行啥的= =
    我也搞不清
    最后搜ld returned 1 exit status发现有人列出了几个可能的情况:

    函数名不对,如printf,scanf什么的打错了
    自定义的函数调用时名字写错

    可是我寻思这也不是没遇见过啊,报错一般是 not declare 啥的啊。。。
    总之检查了一遍没有这种情况;


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^