Search code examples
c++lnk2019

C++ error lnk 2019


I was just trying to see if I can read a text file and display but I have this error:

2 error LNK2019: unresolved external symbol "public: void __thiscall WeatherReport::displayReport(void)" (?displayReport@WeatherReport@@QAEXXZ) referenced in function _main

Can anyone explain me what is causing this, why this is happening and how to fix this problem?

    #include<fstream>
    #include<iomanip>
    #include<stdio.h>
    #include<cmath>
    #include<iostream>

    using namespace std;

    class WeatherReport
    {
        WeatherReport friend monthEnd(WeatherReport, WeatherReport);
        private:
            int dayofMonth;
            int highTemp;
            int lowTemp;
            double amoutRain;
            double amoutSnow;

        public:
            WeatherReport(int Day = 0);
            void setValues(int, int, int, double, double);
            void getValues();
            void displayReport();
    }
    void WeatherReport::setValues(int dom, int ht, int lt, double ar, double as)
    {
        dayofMonth = dom;
        highTemp = ht;
        lowTemp = lt;
        amoutRain = ar;
        amoutSnow = as;
    }

    int main()
    {
        const int DAYS = 30;
        WeatherReport day[DAYS];
        WeatherReport summary;
        int i = 0;

        ifstream inFile;
        inFile.open("WeatherTest.txt");
        if (!inFile)
            cout << "File not opended!" << endl;
        else
        {
            int dom, ht, lt; 
            double ar, as;
            while (inFile >> dom >> ht >> lt >> ar >> as)
            {
                day[i].setValues(dom, ht, lt, ar, as);
                i++;
            }
        inFile.close();

        for (int i = 0; i < DAYS; i++)
        {
            day[i].displayReport();
            //read one line of data from the file
            //pass the data to setValues to initialize the object
        }
        system("PAUSE");
        return 0;
    }

Solution

  • Your displayReport does not have a function body, and as such does not have an external symbol referencing it, hence the error. Add a function body for displayReport, and the issue will go away:

    void WeatherReport::displayReport()
    {
      //Place your code here.
    }
    

    The following code can be used to reproduce this error:

    [header file- test.h]:

    #include "StdAfx.h"
    
    void someOtherFunction();
    void someFunction(string thisVar);
    

    [code file- test.cpp]:

    #include "StdAfx.h"
    #include "test.h"
    
    void someOtherFunction()
    {
        printf("Hello World!");
    }
    

    [function body for someFunction(string thisVar) is missing!]