我在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,我不知道它是從哪裏來的,我現在就刪除它並運行。 感謝您的方式。
我發現錯誤信息很容易理解,並給出了準確的信息......你在他們不明白什麼(請格式化他們仔細)?而且我還建議將'-Wall'傳遞給'g ++'(並且請不要覺得編譯器感到惱火*,它實際上*可以幫助你)。 – 2013-04-27 12:26:34
你如何編譯你的程序?用'g ++ -c -Wall Employee.cc'編譯時我沒有遇到任何錯誤;你也可以通過'-H'到'g ++'來精確地學習包含的文件... – 2013-04-27 12:33:03
你的代碼編譯[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