2014-03-19 85 views
0

這是我的類函數調出公共成員變量

class Employee 
{ 
    private: 
     string ename; 
     double esalary; 
    public: 
     Employee(string nm = "", double sal = 0.0) 
     { 
      ename = nm; 
      esalary = sal; 
     } 
     string getName() 
     { return ename;} 
     double getSalary() 
     { return esalary;} 
}; 
#endif 

,現在我的身體殘缺......

#include "employee.h" 

using namespace std; 

Employee read_employee() 
{ 
string name; 
cout << "Please enter the name: "; 
getline(cin, name); 
double salary; 
cout << "Please enter the salary: "; 
cin >> salary; 
Employee r(name, salary); 
return r; 
} 

int main() 
{ 
Employee emp(string name,double salary); 
read_employee(); 
} 

我想知道我怎麼叫「的getName或的getSalary」功能來自班級。我習慣於沒有參數的類對象。

+1

'emp.getName()'和'emp.getSalary()'應該訣竅 – AndyG

+0

不,我試過了。不起作用 – user3345335

+0

您的主要功能包括聲明一個函數,然後調用另一個函數,但不使用返回值。 – chris

回答

0

試試這個:

Employee emp = read_employee(); 

相反的:

Employee emp(string name,double salary); 
read_employee(); 

然後你就可以說:

emp.getName()emp.getSalary()

你的問題是,你的read_employee()功能是全局功能。也就是說,它不一定附加到任何特定的Employee實例。如果您添加到您的Employee類,事情可能工作好一點:

class Employee 
{ 
    private: 
     string ename; 
     double esalary; 
    public: 
     Employee(string nm = "", double sal = 0.0) 
     { 
      ename = nm; 
      esalary = sal; 
     } 
     string getName() 
     { return ename;} 
     double getSalary() 
     { return esalary;} 
     void read_employee() 
     { 
     cout << "Please enter the name: "; 
     getline(cin, ename); 
     cout << "Please enter the salary: "; 
     cin >> esalary; 

     } 
}; 

然後在main

#include "employee.h" 
using namespace std; 

int main() 
{ 
    Employee emp; 
    emp.read_employee(); 
    cout << emp.getName() << endl; 
    cout << emp.getSalary() << endl; 
} 

免責聲明:我沒有做任何錯誤檢查可言,因此我們只需假定用戶將會對他/她的輸入玩得很開心。

+0

那麼我應該讓read_employee()函數使用這個類,但不能成爲類的一部分。這就是爲什麼我把這個函數放在int main之外,而不是在public class – user3345335

+0

@ user3345335之內:在這種情況下,在'main'中簡單地說'Employee emp = read_employee();'而不是現在你擁有的東西。那麼你應該可以打電話給你的其他功能。 – AndyG

+0

是的,現在的作品謝謝:)現在要做我的測試治療 – user3345335

0

正如克里斯提到的,你沒有把你的函數的返回值賦值給任何東西。你想要的東西類似於:

Employee emp = read_employee(「Johnny」,45000);

這將在你的函數中創建一個僱員對象,然後返回它。那個返回的對象然後被分配給emp。