错误:'类TermPaper'没有名为''

时间:2016-04-29 22:58:16

标签: c++

我正在为课程创建一个小型源文件/项目,并且我一直收到错误' 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;
}

我不太确定我的教师给我的文件是否有错误(没有从编译器中检测到任何文件)或者我是否忘记了我自己的代码中的某些内容。我现在一直在浏览我的教科书,所有这些例子都没有告诉我什么。

任何帮助都会很棒,特别是因为这是我本学期的第二次任务!

2 个答案:

答案 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的包含之后,否则编译器不知道那个类“看起来像什么”(即定义)该课程。)