C++ C++;:访问结构元素的初始化构造函数

C++ C++;:访问结构元素的初始化构造函数,c++,struct,C++,Struct,假设我有一个具有构造函数类型的结构: 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\u struct{ array2D-arr; array

假设我有一个具有构造函数类型的结构:

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\u struct{
array2D-arr;
array2darr2;等。
}
//我通常会在其中生成arr,如:
int n=50;int m=100;
阵列2d 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\u struct{
array2D-arr;
我的结构(n,m){
阵列2d(n,m);
this->arr=此\u arr;
}
}
有没有一种方法可以像这样访问构造函数(在伪代码中):

struct my\u struct{
array2D-arr;
我的结构(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(n,m) : arr(n, m) { }
}
struct my\u struct{
array2D-arr;
我的结构(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(n,m) : arr(n, m) { }
}
struct my\u struct{
array2D-arr;
我的结构(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(n,m) : arr(n, m) { }
}
struct my\u struct{
array2D-arr;
我的结构(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(n,m) : arr(n, m) { }
}
struct my\u struct{
array2D-arr;
我的结构(n,m):arr(n,m){
}

您需要利用构造函数的。在构造函数的主体之前,可以列出该类的任何成员或基类进行初始化

struct my_struct 
{
    array2D<double> arr;
    my_struct(int n, int m) : arr(n, m)
    { }
};
struct my\u struct
{
array2D-arr;
我的结构(int n,int m):arr(n,m)
{ }
};

未出现在初始值设定项列表中的成员和基类(如果列表不存在,则为所有成员和基类)将首先默认构造。即使尝试为构造函数体中的那些成员赋值,它们仍然会首先被初始化,而不带任何参数。请注意,先初始化基类,然后按照它们在类声明中出现的顺序初始化成员,而不管它们在初始值设定项列表中出现的顺序。

您需要使用构造函数的。在构造函数的主体之前,可以列出该类的任何成员或基类进行初始化

struct my_struct 
{
    array2D<double> arr;
    my_struct(int n, int m) : arr(n, m)
    { }
};
struct my\u struct
{
array2D-arr;
我的结构(int n,int m):arr(n,m)
{ }
};

未出现在初始值设定项列表中的成员和基类(如果列表不存在,则为所有成员和基类)将首先默认构造。即使尝试为构造函数体中的那些成员赋值,它们仍然会首先被初始化,而不带任何参数。请注意,基类首先初始化,然后,不管成员在初始值设定项列表中出现的顺序如何,成员都会按照它们在类声明中出现的顺序出现。

成员初始值设定项列表的有用性与它被教授的频率之间的关系就在调试器中。成员初始值设定项列表的有用性与它被教授的频率之间可能存在重复调试程序就在上面。nvm的可能副本——很好的答案;感谢您的简单示例和解释。否则,所有答案都很好。nvm--很好的答案;感谢您的简单示例和解释。否则,所有答案都很好。