Доступ к объектам в массиве указателей

208
30 октября 2017, 23:39

К примеру у меня есть 2 массива указателей:

Vidannya* arr[3];
arr[0]=new Knygy[n];
arr[1]=new Gasety[p];

n, p - количество обьектов данного производного класса.

Как при n,p >1 получить доступ к остальным объектам, а не только к одному?

Answer 1

Так как каждый элемент массива arr - это массив, то в

arr[i][j]

i - это индекс массива в котором храняться указатели на однотипные объекты (Knygy или Gasety), а j - это индекс непосредственно указателя на конкретный объект

вот так например

#include <iostream>
using namespace std;
class Vidannya{
public:
 virtual void printName() = 0;
};
class Knygy : public Vidannya{
public:
 virtual void printName(){
  cout << "Knygy" << endl;
 }
};
class Gasety : public Vidannya{
public:
 virtual void printName(){
  cout << "Gasety" << endl;
 }
};
int main() {
    int n = 3, p = 3;
    Vidannya*arr[2];
    arr[0]=new Knygy[n];
    arr[1]=new Gasety[p];
    arr[0][0].printName();
    arr[0][1].printName();
    arr[1][0].printName();
    arr[1][0].printName();
    return 0;
}
READ ALSO
Ошибкa в статическом массиве

Ошибкa в статическом массиве

Метод printf принимает первым параметром строку, а затем несколько значений, которые будут подставлены в эту строкуВ вашем коде в printf передаётся...

252
Как взаимно заменить числа в файле

Как взаимно заменить числа в файле

Всем доброго времени суток,

316
Существует ли проверка интерфейса шаблона C++?

Существует ли проверка интерфейса шаблона C++?

В книге Бьярне Страуструпа "ПрограммированиеПринципы и практика с использованием C++, 2-е издание

238
Классификация итераторов

Классификация итераторов

Как в коде применяются классы классификации итераторов:

242