假设我有一个具有构造函数的类型的结构:
struct my_struct {
array2D<double> arr;
array2D<double> arr2; etc.
}
// where I would typically generate arr like:
int n = 50; int m = 100;
array2D<double> arr(n,m);
现在,我按如下方式初始化我的结构:
struct my_struct {
array2D<double> arr;
my_struct(n,m){
array2D<double> this_arr(n,m);
this->arr = this_arr;
}
}
有没有办法像这样访问构造函数(在伪代码中):
struct my_struct{
array2D<double> arr;
my_struct(n,m){
this->arr(n,m);
}
}
现在,我在我的结构中保存指针...但是使用该结构是无关紧要的,因为我正在尝试使用该结构来清理代码。
最佳答案
您需要使用构造函数的 initializer list .在构造函数体之前,您可以列出该类的任何成员或基类以进行初始化。
struct my_struct
{
array2D<double> arr;
my_struct(int n, int m) : arr(n, m)
{ }
};
没有出现在初始化列表中的成员和基类(如果列表不存在,则所有成员和基类)将首先被默认构造。即使您尝试为构造函数主体中的这些成员赋值,它们仍将首先在没有参数的情况下进行初始化。请注意,首先初始化基类,然后按照它们在类声明中出现的顺序初始化成员,而不管它们在初始化列表中出现的顺序如何。
关于C++:访问结构元素的初始化构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47578460/