我正在为课程创建一个小型源文件/项目,并且我一直收到错误' class TermPaper'没有名为' setfirstName' /' setlastName' /' setsubject' '基本上.set或.get的每一行都是错误的。
#include <iostream>
#include <string>
#include "TermPaper.cpp"
#include "TermPaper.h"
using namespace std;
int main(int argc, char** argv) {
//Declare variables
TermPaper paper1;
string firstName;
string lastName;
string subject;
char grade;
cout << "Please enter first name. " << endl;
cin >> firstName;
cout << "Please enter last name." << endl;
cin >> lastName;
cout << "Please enter subject." << endl;
cin >> subject;
cout << "Please enter letter grade." << endl;
cin >> grade;
paper1.setfirstName();
paper1.setlastName();
paper1.setsubject();
paper1.setgrade();
cout << "First name:" << paper1.getfirstName() << endl;
cout << "Last Name: " << paper1.getLastName() << endl;
cout << "Subject: " << paper1.getSubject() << endl;
cout << "Grade: " << paper1.getGrade() << endl;
return 0;
}
这是我创建的.cpp文件,下面是我的教师给出的.cpp文件,并被告知复制到上面有我的代码的项目文件夹中。这是我假设定义了TermPaper类的地方,而且我没有足够的信心来编辑它,因为我担心我会产生更多错误。
TermPaper::TermPaper( )
{
fName = "";
lName = "";
subject = "";
letterGrade = 'F';
}
void TermPaper::setFName(string fN)
{
fName = fN;
}
void TermPaper::setLName(string lN)
{
lName = lN;
}
void TermPaper::setSubject(string sub)
{
subject = sub;
}
void TermPaper::setLetterGrade(char grade)
{
letterGrade = grade;
}
string TermPaper::getFName( )
{
return fName;
}
string TermPaper::getLName( )
{
return lName;
}
string TermPaper::getSubject( )
{
return subject;
}
char TermPaper::getLetterGrade( )
{
return letterGrade;
}
我不太确定我的教师给我的文件是否有错误(没有从编译器中检测到任何文件)或者我是否忘记了我自己的代码中的某些内容。我现在一直在浏览我的教科书,所有这些例子都没有告诉我什么。
任何帮助都会很棒,特别是因为这是我本学期的第二次任务!
答案 0 :(得分:3)
迈克尔·阿尔伯斯指出的cpp文件的包含是一个肯定的禁忌,会带来很多悲伤,但是......
但我在帖子摘要中的setfirstName
方法中看不到TermPaper
。尝试调用setFName
提供的TermPaper
方法,不要忘记您需要提供方法所需的参数。没有参数,糟糕的编译器就不知道你想要做什么。它将查找看起来像void TermPaper::setFName()
*的函数,但找不到。
paper1.setFName(firstName);
paper1.setLName(lastName);
paper1.setSubject(subject);
paper1.setLetterGrade(grade);
*这不太正确。它会查找具有任何返回类型的TermPaper::setFName()
内容。重载总是基于参数,并没有给出关于返回类型的信息。
答案 1 :(得分:2)
删除.cpp文件的包含。通常,您只需包含.h文件,并将.cpp文件编译到其自己的单独目标文件(.o)中。然后将所有.o文件链接到可执行文件中。在你的情况下,你可能可以将函数体包含在你的源文件中,但它们需要在.h的包含之后,否则编译器不知道那个类“看起来像什么”(即定义)该课程。)