2016-04-29 79 views
0

我正在为类创建一个小的源文件/项目,我不断收到错误'TermPaper'没有名为'setfirstName'/'setlastName'/' setsubject“等。基本上每一行.set或.get是一个错误。错误:'类TermPaper'没有名为''的成员

#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的地方,我没有足够的信心去编辑它,因为恐怕我只会产生更多的错误。

我不太清楚,如果有我的导师给我的文件中的错误(没有发现任何从编译器检测到),或者如果我只是忘了在我自己的代码的东西。我在过去的一个小时里一直在浏览我的课本,而且所有的例子都没有告诉我什么。

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

回答

3

的包括cpp文件中指出,由迈克尔·阿尔伯斯是一个明确的禁忌,将带来多大的悲伤,但是......

但我没有看到setfirstNameTermPaper在张贴的方法中片段。尝试调用TermPaper提供的setFName方法,并且不要忘记您需要提供方法的必需参数。如果没有这些参数,那么可怜的编译器就不知道你正在尝试做什么。它会寻找一个看起来像void TermPaper::setFName() *的函数,但找不到它。

paper1.setFName(firstName); 
paper1.setLName(lastName); 
paper1.setSubject(subject); 
paper1.setLetterGrade(grade); 

*这是不完全正确的。它会寻找类似TermPaper::setFName()的任何返回类型。重载总是基于参数,并没有给出返回类型的补偿。

+0

'setubject'和'setgrade'也未在'TermPaper'中定义。它们分别是'setSubject'和'setLetterGrade'。 – computerfreaker

+0

非常感谢。纠正。 – user4581301

+0

非常感谢!它编译正确。我猜我掩盖了这些线的名字,我的坏。 – sighs

2

删除包含.cpp文件。通常,只需包含.h文件,并将.cpp文件编译到其自己的单独对象文件(.o)中。然后,所有.o文件都链接到可执行文件中。在你的情况下,你可能不想将函数体包含到你的源文件中,但是它们需要在包含.h之后,否则编译器不知道那个类“看起来像什么”(即,定义的类)。

相关问题