未定义的引用:试图初始化来自不同 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;
不是定义,是初始化。
"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;
不是定义,是初始化。