Назначение функции элементу массива в c ++ - PullRequest
0 голосов
/ 28 апреля 2018

В настоящее время я работаю над домашним заданием, в котором мы используем пустые функции для печати информации.

Наш учитель хочет, чтобы мы сделали это:

Продемонстрировать класс в программе, имеющей массив кораблей. приписывать различные объекты Ship, CruiseShip и CargoShip для элементов массива. Затем программа должна пройти через массив, вызывая объект метод 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;    }

Как мне это сделать? Я застрял ...

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

В инструкциях говорится, что массив должен содержать корабли, а не указатели на функции. Однако, чтобы избежать нарезки объектов, это должен быть массив указателей. Вам нужно:

Ship *ships[] = {&obj1, &obj2, &obj3};
for (int i = 0; i < sizeof(ships)/sizeof(*ships); i++) {
    ship[i]->printInfo();
}
0 голосов
/ 28 апреля 2018

Вы не вызываете свои функции в массиве.

for (int i = 0; i < 3; i++) // loop to output each function 
{ 
     cout << ship[i]() << endl << endl; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...