我正在尝试将静态指针初始化为类定义中的数组,但出现运行时错误。我看过一些类似的例子,但我无法让它工作,也不知道为什么。我尝试过的一些示例代码是:
class Header
{
private:
static int *pointer;
public:
int getVal(int val);
};
类定义:
#include "Header.h"
int* Header::pointer = new int[] {0, 1, 2, 3, 4};
int Header::getVal(int val)
{
return pointer[val];
}
主要的:
#include "Header.h"
#include <iostream>
int main(int argc, char ** argv)
{
Header header;
for (int i = 0; i < 5; i++)
{
std::cout << header.getVal(i);
}
}
在初始化指针时运行它会导致错误。如果我在调试器中运行它并忽略错误,我可以看到指针在开头被初始化为 0。如果我继续单步执行它,我会收到另一个错误,说堆已损坏。是否可以以这种方式初始化指针?如果没有,是否有关于如何在类定义中将成员变量指针初始化为数组并为其赋值的任何建议,而无需单独分配数组的每个元素。