如何将对象数组传递给函数?

How to pass object array to a function?

class department
{
    void max() ***HOW TO PASS ARRAY OF OBJECT HERE , WHAT PARAMETERS SHOULD I PASS***
    {
    } 
};

class B : public department {
};

int main()
{
    B a[10];
   
    // a.max(a,n);  ***HOW TO CALL THIS max FUNCTION***
    return 0;
} 

我想将对象数组 a[10] 传递给 max 函数。怎么调用和传递?

我不想这样做:

for(i = 0; i < n; i++)
{
    a[i].max
}

您将 max() 实现为 department 非静态 方法,因此您需要一个 department 对象来调用它,像数组中的每个 B 对象,例如:

for(int i = 0; i < 10; ++i)
{
    a[i].max();
}

如果这不是您想要的,那么 max() 需要从 department 中删除,或者至少改为 static。无论哪种方式,您都必须更改其输入参数以接受数组。

尝试更像这样的东西:

class department
{
public:
    static void max(department *depts, int count)
    {
        //...
    } 
};

class B : public department {
};

int main()
{
    B a[10];
    department::max(a, 10);
    return 0;
} 

Online Demo

或者:

class department {
};

class B : public department {
};

void max(department *depts, int count)
{
    //...
} 

int main()
{
    B a[10];
    max(a, 10);
    return 0;
} 

Online Demo

How to pass object array to a function?

函数的参数不能是C++中的数组。参数可以是对数组的引用。或者,通常传递指向数组元素的迭代器。对象指针是数组的迭代器。

department::max() 是一个非静态成员函数。它有空参数列表,所以它根本不接受任何参数,除了用作成员访问运算符的左手操作数的隐式 class 实例。由于此函数不接受对数组参数或指针参数的引用,因此无法将数组作为参数传递。

下面是一个接受数组引用作为参数的函数的示例,以及如何调用此类函数的示例:

void max(B (&arr)[10]);

int main()
{
    B a[10];
    max(a);
}