我的朋友功能没有执行

时间:2013-10-12 16:14:43

标签: c++ friend-function

我在头文件中声明了一个友元函数,并在我的.cpp文件中定义了它,但是当我编译时,我被告知变量'尚未在此范围内声明'。我的理解是,当一个函数被标记为类的朋友时,该函数能够直接访问该类的所有成员,那么为什么我会得到这个错误呢?

我的.h文件:

#ifndef EMPLOYEE_H
#define EMPLOYEE_H

#include<string>
using namespace std;

class Employee
{
  friend void SetSalary(Employee& emp2);

 private:

  string name;
  const long officeNo;
  const long empID;
  int deptNo;
  char empPosition;
  int yearOfExp;
  float salary;
  static int totalEmps;
  static int nextEmpID;
  static int nextOfficeNo;

 public:
  Employee();
  ~Employee();
  Employee(string theName, int theDeptNo, char theEmpPosition, int theYearofExp);
  void Print() const;
  void GetInfo();
};

#endif
my.cpp文件中的

功能

void SetSalary(Employee& emp2)
{

  while (empPosition == 'E')
    {
      if (yearOfExp < 2)
        salary = 50000;
      else
        salary = 55000;
    }
}

注意:在我的Main.cpp中,我正在创建一个对象'emp2'。这将作为参数传递给函数。

1 个答案:

答案 0 :(得分:4)

empPositionyearOfExpsalaryEmployee类的成员,因此您需要

while (emp2.empPosition == 'E') ....
//     ^^^^

,类似地涉及yearOfExpsalary的表达式。 friend函数是非成员函数,因此它们只能通过该类的实例(在这种情况下为emp2)访问它们所属的类的数据成员。