C ++:访问struct elements

时间:2017-11-30 16:46:08

标签: 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_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);
    }
}

现在,我在我的结构中持有指针...但是然后使用结构就是重点,因为我试图使用结构来清理代码。

3 个答案:

答案 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)
    { }
};

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