我只是想看看我是否可以阅读文本文件并显示但是我有这个错误:
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;
}
答案 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}}的函数体丢失!]