Вызов открытых переменных-членов

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() должны сделать emp.getSalary() дело
  • 0
    Нет, я пытался. Не работает
Показать ещё 3 комментария
Теги:
class

2 ответа

0

Как упоминает Крис, вы не назначаете возвращаемые значения своих функций ни на что. Вы хотите что-то вроде:

Сотрудник emp = read_employee ("Джонни", 45000);

Что создаст объект employee в вашей функции, а затем вернет его. Этот возвращенный объект затем присваивается emp.

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, а не внутри публичного класса
  • 0
    @ user3345335: В этом случае просто скажите Employee emp = read_employee(); в main вместо того, что у вас есть сейчас. Тогда вы сможете вызывать ваши другие функции.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню