未定义的引用:试图初始化来自不同 class 的对象的指针数组

Undefined reference: trying to initialize pointer array of objects from different class

"duplicated from" question 的解决方案是在 class 定义之后初始化指针,但我发现这样做没有成功。尝试插入 A B::AArray;A B::AArray = new A[10]; 给我多个错误,包括 "conflicting declaration" 和 "cannot be initialized by a non-constant expression"。我似乎找不到在代码中的任何地方定义 B::AArray 的方法。

class A{
public:
    int Avar;
    A(int Avar = 0){this->Avar = Avar;}
};

class B{
private:
    static A *AArray;
public:
    static void setAArray();
};

int main(){
    return 0;
}

void B::setAArray(){
    A *data;
    data = new A[10];
    AArray = data; // <- delete this line and the program complies
}

这段代码说我有一个对 'B::AArray' 的未定义引用并且不会编译。如果我想要一个指向 class B 中的 class A 对象数组的静态指针,我该如何解决这个问题?

注意:我的 class 目前不使用多个文件,所有内容都在一个 .cc 文件下

鉴于先前副本的内容,下面是更详细的 OP 代码工作示例。

定义需要在函数外;

class B{
private:
    static A *AArray;
public:
    static void setAArray();
};

A* B::AArray = nullptr; // define and initialise with a suitable default

int main(){
    return 0;
}

void B::setAArray(){
    A *data;
    data = new A[10];
    AArray = data; // initialization...
}

AArray = data;不是定义,是初始化。

Sample listing.