[英]C++: access initialization constructor for struct elements
假设我有一个结构体具有构造函数的结构:
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);
}
}
现在,我将指针保存在我的结构中...但是使用结构是不重要的,因为我试图使用该结构来清理代码。
使用成员初始化器列表:
struct my_struct{
array2D<double> arr;
my_struct(n,m)
: arr(n,m)
{
}
}
您正在寻找的是初始化列表:
struct my_struct{
array2D<double> arr;
my_struct(n,m) : arr(n, m) { }
}
您需要利用构造函数的初始化程序列表 。 在构造函数的主体之前,您可以列出该类的任何成员或基类以进行初始化。
struct my_struct
{
array2D<double> arr;
my_struct(int n, int m) : arr(n, m)
{ }
};
不会在初始化列表中出现的成员和基类(如果列表不存在,则不出现在所有成员和基类中)将首先被默认构造。 即使您尝试为构造函数主体中的那些成员分配值,它们也仍将首先不带任何参数进行初始化。 请注意,首先初始化基类,然后按照成员在类声明中出现的顺序对其进行初始化,而不考虑它们在初始化列表中出现的顺序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.