是否将双对象指针数组作为函数参数



我提出了一个可能很奇怪的问题。我在做练习时遇到了一个问题。重点是创建一个Employee类,然后创建一个以Employee**及其大小数组为参数的函数,并使其显示每个拥有5年以上经验的员工。

以下是Employee类的相关部分:

//in Employee.h:
int Getexperience() { return experience; }
virtual void show();

//in Employee.cpp:
void Employee::show()
{
cout << "Name: " << this->surname << ", Age: " << this->age << ", Experience: " << this->experience << ", Salary: " << this->salary << endl;
}

这是用main.cpp编写的函数:

void whoWorkMoreThan5Years(Employee** tab[], int size){
for(int i =0; i<size; i++){
if(tab[i]->Getexperience() > 5){
tab[i]->show();
}
}
}

这给我带来了错误:

error: request for member 'Getexperience' in '* *(tab + ((sizetype)(((unsigned int)i) * 4u)))', which is of pointer type 'Employee*' (maybe you meant to use '->' ?)|

老实说,自从之后,我甚至不知道它应该意味着什么

  1. 我正在使用'->'用于对象的方法
  2. 我不知道是什么"**(tab+((sizetype((((unsigned int(i(*4u(("部分甚至引用到

我想我的问题基本上是:我做错了什么?在这种我不知道的情况下,有没有什么特殊的方法可以使用对象的方法?

在数组中传递的方式是错误的。当前Employee** tab[]表示您有一个指向Employee对象指针的指针数组。您想要的是Employee* tab[]Employee** tab,它们都是指向Employee对象的指针数组。

注意,Employee**Employee* tab[]相同,因为数组衰减为指针。

最新更新