Хорошо, вот мой C заголовочный файл ++:Как использовать неинициализированный статический массив в C++?
// a.h
class A
{
private:
static A* aContainer[10];
public:
static void generate(int amount);
}
А вот .cpp
файл:
// a.cpp
void A::generate(int amount)
{
for(int i = 0; i < amount; i++)
{
aContainer[i] = new Container();
}
}
Я знаю static
поля должны быть инициализированы, но мне нужно способность иметь некоторое определенное количество элементов в aContainer
, Если я инициализирую aContainer
, он будет содержать все 10 элементов, а 10 - максимальное количество элементов.
Можно ли инициализировать aContainer
с помощью NULL
или что-то в этом роде?
использования 'станд :: VECTOR' или' станд :: deque' для переменного размера контейнера –
В качестве статического члена класса, массив автоматически инициализируется с нулевыми указателями. Я также рекомендую использовать реальный контейнер, а также рассмотреть 'std :: unique_ptr', чтобы объекты были уничтожены в конце дня. –
Статические vars в классе/структуре не создают никакой памяти. Вам нужно объявить их в глобальном масштабе, а также получить память для них. –