Foo *(*f) = new Foo*[10];
Скобки в объявлении не нужны, так что это то же самое, что и
Foo **f = new Foo*[10];
В любом случае new Foo*[10]
выделяет место для десяти Foo*
с и оставляет их неинициализированными. Он возвращает указатель на начальный Foo*
в массиве (нулевой элемент), который вы присваиваете f
.
Для доступа к элементам массива вы просто используете подписку:
f[0] = new Foo;
f[0]->fooMember();
Помните, что все, что вы создаете с помощью new[]
, должно быть освобождено один раз, когда вы закончите с этим, вызвав delete[]
на указателе. Например:
delete[] f;
Это не удаляет элементы, на которые указывают Foo*
s в массиве. Если вы создаете Foo
объекты, используя new
, вы должны delete
их до , чтобы удалить массив. Например, чтобы освободить элемент, который мы создали выше:
delete f[0];