假设我的结构具有一个拥有构造函数的类型:
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);
}
}
现在,我在我的结构中持有指针...但是然后使用结构就是重点,因为我试图使用结构来清理代码。
答案 0 :(得分:1)
使用成员初始化列表:
struct my_struct{
array2D<double> arr;
my_struct(n,m)
: arr(n,m)
{
}
}
答案 1 :(得分:1)
您正在寻找的是初始化列表:
struct my_struct{
array2D<double> arr;
my_struct(n,m) : arr(n, m) { }
}
答案 2 :(得分:1)
您需要使用构造函数initializer list。在构造函数的主体之前,您可以列出该类的任何成员或基类以进行初始化。
struct my_struct
{
array2D<double> arr;
my_struct(int n, int m) : arr(n, m)
{ }
};
初始化列表中未出现的成员和基类(如果列表不存在,则为所有成员和基类)将首先默认构造。即使您尝试将值分配给构造函数体中的那些成员,它们仍将首先初始化为不带参数。请注意,首先初始化基类,然后按照它们在类声明中出现的顺序初始化成员,而不管它们在初始化列表中出现的顺序。