Header file in c++

Header file in c++

本文关键字:c++ in file Header      更新时间:2023-10-16

以下错误的头文件:对' swimmingPool:: timenneeded (int)'的未定义引用

我在代码中犯了一些微不足道的错误,但无法弄清楚是什么。相对较新的语言。请帮忙!!

    #include<iostream>
    #include<cstdio>
    #include "swimmingPool.h"
    using namespace std;
    int main()
    {
        cout << "Pool Data: " << endl;
        swimmingPool p(30,15,10,0,0);
        int rate_in;
        cout << "   Length: " << p.length << endl;
        cout << "   Width: "<< p.width << endl;
        cout << "   Depth: "<< p.depth << endl;
        cout << "   Total water in the pool: " << p.water_initially <<endl;
        cout << "To completely fill the pool" << endl;
        cout << "   Enter water fill in rate: ";
        cin >> rate_in;
        cout<< endl;
        cout << endl;
        cout << "Time to fill the pool is approximately: " <<                         p.timeNeeded(rate_in)/3600 << " hours and "<<
        p.timeNeeded(rate_in)%60<< " minutes."<<endl;
        return 0;
    }

    /**********************************************************************************/
    /******************** swimmingPool.h         **********************************************/
    #ifndef __IH__
    #define __IH__
    class swimmingPool{
    public:
        int length;
        int width;
        int depth;
        int rate_out;
        int water_initially;
        int waterNeeded();
        int timeNeeded(int in);
        swimmingPool(int a,int b, int c, int d,int e){}
    };
    #endif
    /********************************************************************************/
    /******************************** swimmingPoolImp.cpp ****************************/
    #include<iostream>
    #include<cstdio>
    #include "swimmingPool.h"
    swimmingPool::swimmingPool(int a,int b, int c, int d,int e) //IT has five         parameters for length/breadth/height/water_initially/rate_out.Rate to be taken input from         user.
    {
            length = a;
            width = b;
            depth = c;
            rate_out = d;
            water_initially = e;
    }
    int swimmingPool::waterNeeded()
    {
        return( length*width*depth - water_initially)*7.48; //conversion factor
    }
    int swimmingPool::timeNeeded(int rate_in)
    {
            if(rate_in > rate_out)
            {
                return (( waterNeeded() / (rate_in - rate_out))*60);
            }
            else
            {
                return (( waterNeeded() / (rate_out - rate_in))*60);
            }
    };

"undefined reference to…"类别中的错误信息通常意味着该函数,无论是编译的还是其他方式,都没有链接到到您的可执行文件中。

首先,确保swimmingPool.cpp的对象文件(swimmingPool. cpp)。

如果您已经确认了这一点,那么有可能您的make工具在添加了timeNeeded之后忘记重新编译swimmingPool.cpp,因此该目标文件已经过期。如果是这种情况,你应该重新编译swimmingPool.cpp。

执行此操作所需的具体命令取决于您的工具链。

而且,你的函数不是"const-correct",你应该尽快查找,当你学习

解析构造函数的多个定义(一个在头文件中,另一个在cpp文件中)

swimmingPool(int a,int b, int c, int d,int e){} // **this makes it a definition and not just declaration**
swimmingPool::swimmingPool(int a,int b, int c, int d,int e) //IT has five         parameters for length/breadth/height/water_initially/rate_out.Rate to be taken input from         user.
    {
            length = a;
            width = b;
            depth = c;
            rate_out = d;
            water_initially = e;
    }

swimmingPool(int a,int b, int c, int d,int e){}改为swimmingPool(int a,int b, int c, int d,int e);