如何在c++中使用未初始化的静态数组

How to use uninitialized static array in C++?

本文关键字:初始化 静态 数组 c++      更新时间:2023-10-16

好了,这是我的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意味着元素的最大数量。

我可以用NULL s或类似的东西初始化aContainer吗?

我假设你有一个很好的理由不使用std::vector,这是解决这个问题的自然方法。

数组或结构可以用大括号初始化:

    A* A::aContainer[10] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL };

如果没有列出任何成员,则将其初始化为0。所以上面的代码可以简化为:

    A* A::aContainer[10] = {};