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
}
uj5u.com熱心網友回復:
如何將物件陣列傳遞給函式?
函式的引數不能是 C 中的陣列。引數可以是對陣列的參考。或者,通常傳遞指向陣列元素的迭代器。物件指標是陣列的迭代器。
department::max()是一個非靜態成員函式。它有空引數串列,因此它根本不接受任何引數,除了用作成員訪問運算子的左運算元的隱式類實體。由于此函式不接受對陣列引數的參考,也不接受指標引數,因此無法將陣列作為引數傳遞。
下面是一個接受陣列參考作為引數的函式示例,以及如何呼叫這樣的函式:
void max(B (&arr)[10]);
int main()
{
B a[10];
max(a);
}
uj5u.com熱心網友回復:
您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;
}
在線演示
或者:
class department {
};
class B : public department {
};
void max(department *depts, int count)
{
//...
}
int main()
{
B a[10];
max(a, 10);
return 0;
}
在線演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/314614.html
