Это моя функция класса
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 из класса. Я использую объекты класса без параметров.
Как упоминает Крис, вы не назначаете возвращаемые значения своих функций ни на что. Вы хотите что-то вроде:
Сотрудник emp = read_employee ("Джонни", 45000);
Что создаст объект employee в вашей функции, а затем вернет его. Этот возвращенный объект затем присваивается emp.
Попробуй это:
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;
}
Отказ от ответственности: я вообще не делаю проверку на наличие ошибок, поэтому мы просто должны предположить, что пользователь будет играть хорошо со своими входами.
Employee emp = read_employee();
в main
вместо того, что у вас есть сейчас. Тогда вы сможете вызывать ваши другие функции.
emp.getName()
иemp.getSalary()
должны сделатьemp.getSalary()
дело