如何在c++中使用未初始化的静态数组
How to use uninitialized static array in 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意味着元素的最大数量。
我可以用NULL
s或类似的东西初始化aContainer
吗?
我假设你有一个很好的理由不使用std::vector
,这是解决这个问题的自然方法。
数组或结构可以用大括号初始化:
A* A::aContainer[10] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL };
如果没有列出任何成员,则将其初始化为0。所以上面的代码可以简化为:
A* A::aContainer[10] = {};
相关文章:
- 从另一个静态常量数组初始化静态常量数组(只需少量计算)
- "local scope"中的 C++ 初始化静态变量
- 虚拟成员函数的定义是否强制在同一转换单元中动态初始化静态数据成员?
- 未调用的初始化静态thread_local结构的构造函数和析构函数
- 如何在 C++ 中使用 NULL(或 0)初始化静态字符数组
- 如何从静态类函数初始化静态类对象
- C++:用IIFE线程初始化静态局部变量安全吗
- 如何在 c++ 中初始化静态类对象?
- 使用 lambda 初始化静态数组
- 使用 lambda 函数初始化静态数据成员
- 如何从 std::integer_sequence 初始化静态数组?
- 在构造函数中初始化静态函数指针
- C - 初始化静态成员的方法
- 大括号使用枚举类初始化静态常量unordered_map
- C++ main 函数中初始化静态变量
- 在定义(.cpp文件)中初始化静态浮点 constexpr 成员是可能的
- 错误 C2864:'element::next':只能在类 (STRUCT) 中初始化静态常量整数数据成员
- 我应该使用类内发起器初始化静态常量数据成员还是在其类外的定义中初始化静态常量数据成员
- 如何在运行时使用静态成员函数初始化静态成员变量
- 与其他静态const成员初始化静态常量成员