2016-04-29 48 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之後,否則編譯器不知道那個類「看起來像什麼」(即,定義的類)。

相關問題