C ++错误lnk2019

时间:2014-11-02 20:20:46

标签: c++ lnk2019

我只是想看看我是否可以阅读文本文件并显示但是我有这个错误:

  

2错误LNK2019:未解析的外部符号“public:void __thiscall   WeatherReport :: displayReport(无效)”   (?displayReport @ WeatherReport @@ QAEXXZ)在函数_main

中引用

任何人都可以解释一下造成这种情况的原因,为什么会发生这种情况以及如何解决这个问题?

    #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;
    }

3 个答案:

答案 0 :(得分:0)

错误不言而喻

LNK2019: unresolved external symbol "public: void __thiscall WeatherReport::displayReport(void)

无法找到WeatherReport::displayReport()的定义。我在你的代码中看到了它的声明,但是在任何地方都没有定义。要么你没有写一个定义,要么你提供了它并且没有链接它所在的.cpp文件。我猜测前者。

答案 1 :(得分:0)

似乎displayReport()没有正文 - 它只是声明,但没有定义。添加以下内容:

void WeatherReport::displayReport()
{
  //your code
}

答案 2 :(得分:0)

您的displayReport没有功能正文,因此没有external symbol引用它,因此错误。 为displayReport添加一个函数体,问题就会消失:

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

以下代码可用于重现此错误:

[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!");
}

[{1}}的函数体丢失!]