将函数分配给C 中的数组元素

Assigning a function to an array element in c++

本文关键字:数组元素 函数 分配      更新时间:2023-10-16

我当前正在从事作业作业,我们使用void函数打印信息。

我们的老师希望我们这样做:

在具有船舶阵列的程序中演示课程。分配 阵列元素的各种船,巡航和货物对象。 然后该程序应逐步浏览数组,调用对象的 printinfo方法。"

Ship ob1;               // object of ship class     CruiseShip ob2;         // object of
cruiseship class    CargoShip ob3;          // object of cargoship class
typedef void((*shipArray)());   // declaring
   void(*ob1)() = ob1.printInfo;    // pointer to print info function in
 ship class     void(*ob2)() = ob2.printInfo;   // pointer to print info
 function in cruiseship class   void(*ob3)() = ob3.printInfo;   // pointer
 to print info function in cargoship class
    shipArray ship[3] = {ob1.printInfo, ob2.printInfo, ob3.printInfo};  //
 array assigns the functions to each 
element

   for (int i = 0; i < 3; i++)      // loop to output each function     {
cout << ship[i] << endl << endl;    }

我该如何完成?我被卡住了...

指令说数组应包含船舶,而不是功能指针。但是,为避免对象切片,它必须是一系列指针。您需要:

Ship *ships[] = {&obj1, &obj2, &obj3};
for (int i = 0; i < sizeof(ships)/sizeof(*ships); i++) {
    ship[i]->printInfo();
}

您没有在数组中调用您的功能。

for (int i = 0; i < 3; i++) // loop to output each function 
{ 
     cout << ship[i]() << endl << endl; 
}