2013-04-27 30 views
-1

我在Ubuntu中遇到了一個非常惱人的錯誤,那就是我的g ++編譯器。原型...不符合Class中的任何...(錯誤)。 g ++

這是我的代碼。

Employee.h

#ifndef Employee_h 
#define Employee_h 

#include<string> 

using namespace std; 

class Employee 
{ 
    protected: 
    int employeeNumber; 
    string firstName; 
    string lastName; 
    string address; 
    string telephone; 
    double salary; 
    int generateEmployeeNumber(); 

    public: 
    Employee(); 
    Employee(string fin, string lan, string add, string tel, double sal); 
    void setEmployeeName(string fin, string lan); //start of setters 
    void setEmployeeAddress(string add); 
    void setEmployeeTelephone(string tel); 
    void setEmployeeSalary(double sal); 
    string getEmployeeFirstName();   //start of getters 
    string getEmployeeLastName(); 
    string getEmployeeAddress(); 
    string getEmployeeTelephone(); 
    double getEmployeeSalary(); 
    int show(); 
}; 
#endif 

Employee.cpp

#include"Employee.h" 
#include<iostream> 
#include<string> 

using namespace std; 

//start of constructors 
Employee::Employee() 
{ 

} 

Employee::Employee(string fin, string lan, string add, string tel, double sal) 
{ 
    firstName = fin; 
    lastName = lan; 
    address = add; 
    telephone = tel; 
    salary = sal; 
} 
//end of constructors 

//start of setters 
void Employee::setEmployeeName(string fin, string lan) 
{ 
    cout<<"Please enter the Employee's first name: "; 
    cin>>fin; 
    cout<<"Please enter the Employee's last name: "; 
    cin>>lan; 

    firstName = fin; 
    lastName = lan; 
} 

void Employee::setEmployeeAddress(string add) 
{ 
    cout<<"Please enter the Employee's address: "; 
    cin>>add; 
    address = add; 
} 

void Employee::setEmployeeTelephone(string tel) 
{ 
    cout<<"Please enter the Employee's telephone number: "; 
    cin>>tel; 
    telephone = tel; 
} 

void Employee::setEmployeeSalary(double sal) 
{ 
    cout<<"Please enter the Employee's monthly salary: R"; 
    cin>>sal; 
    salary = sal; 
} 
//end of setters 

//start of getters 
string Employee::getEmployeeFirstName() 
{ 
    return firstName; 
} 

string Employee::getEmployeeLastName() 
{ 
    return lastName; 
} 

string Employee::getEmployeeAddress() 
{ 
    return address; 
} 

string Employee::getEmployeeTelephone() 
{ 
    return telephone; 
} 

double Employee::getEmployeeSalary() 
{ 
    return salary; 
} 
//end of getters 

這是我的錯誤:

Employee.cpp:31:6: error: prototype for ‘void Employee::setEmployeeName(std::string, std::string)’ does not match any in class ‘Employee’ 
Employee.h:22:16: error: candidate is: void Employee::setEmployeeName() 
Employee.cpp:42:6: error: prototype for ‘void Employee::setEmployeeAddress(std::string)’ does not match any in class ‘Employee’ 
Employee.h:23:7: error: candidate is: int Employee::setEmployeeAddress(std::string) 
Employee.cpp:49:6: error: prototype for ‘void Employee::setEmployeeTelephone(std::string)’ does not match any in class ‘Employee’ 
Employee.h:24:7: error: candidate is: int Employee::setEmployeeTelephone(std::string) 
Employee.cpp:56:6: error: prototype for ‘void Employee::setEmployeeSalary(double)’ does not match any in class ‘Employee’ 
Employee.h:25:10: error: candidate is: double Employee::setEmployeeSalary(std::string) 

任何人都可以SP有什麼問題?

謝謝。

好的,我發現這個問題。 在同一個目錄中有一些文件名Employee.h.gwh,我不知道它是從哪裏來的,我現在就刪除它並運行。 感謝您的方式。

+2

我發現錯誤信息很容易理解,並給出了準確的信息......你在他們不明白什麼(請格式化他們仔細)?而且我還建議將'-Wall'傳遞給'g ++'(並且請不要覺得編譯器感到惱火*,它實際上*可以幫助你)。 – 2013-04-27 12:26:34

+0

你如何編譯你的程序?用'g ++ -c -Wall Employee.cc'編譯時我沒有遇到任何錯誤;你也可以通過'-H'到'g ++'來精確地學習包含的文件... – 2013-04-27 12:33:03

+3

你的代碼編譯[just fine](http://coliru.stacked-crooked.com/view?id=ca9a0c22d9c51a7065e6353f8b840ba5-50d9cfc8a1d350e7409e81e87c2653ba)我敢打賭,你正在構建包含過時類聲明的不同頭文件。並且,請[不要在標題中使用'](http://stackoverflow.com/questions/5849457/using-namespace-in-c-headers)。 – alexrider 2013-04-27 12:35:37

回答

3

您發佈的信息是正確的,所以您必須包含另一個"Employee.h" ......您確定您正在編輯正確的文件嗎?

+0

良好的洞察力,但也許更多的評論比答案(我仍然upvoted )。 – 2013-04-27 12:43:11

+0

Yepp。如果我能想出任何其他可能的場景,我就不會發布這個答案了。我看到預編譯頭文件出錯了VS但沒有使用gcc。 – 2013-04-27 12:45:25

+1

Umm 我使用 進行編譯g ++ -c Employee.cpp 我用g ++ -c -Wall Employee.cpp嘗試過,但仍然給出了相同的錯誤。 我100%確定我正在編譯正確的源代碼。因爲這些是當前工作目錄中的唯一文件。 這可能是我的g ++的問題嗎? – 2013-04-27 12:55:35

相關問題