我有以下代码使用类定义读取文本文件。我创建了TermGrade.h文件和TermGrade.cpp文件。但我得到的错误很少:
在TermGrade.h文件中,我收到警告,它无法找到任何已定义函数(Readdata,MidsemesterScore,FinalScore和LetterGrade)的定义,即使我在.cpp文件中定义了它们。
然而,主要问题是在TermGrade.cpp文件中我收到错误"错误:没有重载函数的实例" getline"匹配参数列表"它还抱怨标识符" inLine"是未定义的,但它不会在下一个声明中抱怨inLine,但该声明说明了两者 dataLines [lineNumber]未定义!我是否需要在.cpp文件中定义这些变量?任何帮助将不胜感激。
谢谢你, 比尔。
// TermGrade.h file
#ifndef TERMGRADE_H
#define TERMGRADE_H
#include <string>
#include<iostream>
#include<fstream>
using namespace std;
class TermGrade {
public:
TermGrade(string fileName) {};
string StudentID;
int assignments;
int exam1;
int exam2;
int final;
bool records = true;
private:
string inLine;
string dataLines[100];
int lineNumber = 0;
bool Readdata(istream& in); // Read line of data from input file
double MidsemesterScore() const; // Calculates average
double FinalScore() const; // Calculates average
char LetterGrade() const; // Determines grade
}; // end class Termgrade
#endif
// TermGrade.cpp file
#include "TermGrade.h" // TermGrade class definition
#include<iostream>
#include<fstream>
TermGrade::TermGrade(string fileName) {
ifstream infile;
infile.open(fileName);
}
bool Readdata(istream& infile)
{
if (!infile.eof)
{
getline(infile, inLine);
dataLines[lineNumber] = inLine;
return true;
}
return false;
}
double MidsemesterScore()
{
return 0.0;
}
double FinalScore()
{
return 0.0;
}
char LetterGrade()
{
return 'a';
}
答案 0 :(得分:1)
在TermGrade.h文件中,我收到无法找到的警告 任何已定义函数的定义(Readdata, MidsemesterScore,FinalScore和LetterGrade)即使我拥有它们 在.cpp文件中定义。
不,您没有在TermGrade::Readdata
文件中定义它们。例如,您没有Readdata
方法的定义。该方法未在任何地方定义。你在那里有一个名为TermGrade::Readdata
的函数,但是使用getline()
方法无关紧要。
关于您遇到的其他一些错误:
您正在调用一个名为istream
的函数,但是您没有在任何地方定义该函数,这就是您收到编译器错误的原因。也许您打算从C ++库中引用std :: getline()函数,如果是这样的话,那就是你应该引用的内容。
此外,您正在传递对名为std::istream
的类的引用,遗憾的是您没有在任何地方定义此类。如果您打算引用std::istream
类,那么您应该引用它。
但是,eof
类没有名为eof
的成员。但它确实有一个def singleton(cls):
instance = None
@functools.wraps(cls)
def inner(*args, **kwargs):
nonlocal instance
if instance is None:
instance = cls(*args, **kwargs)
print cls
return instance
return inner
@singleton
class TryMe(object):
pass
m = TryMe()
print m
()方法。