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

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

现在,我在我的结构中保存指针...但是使用该结构是无关紧要的,因为我正在尝试使用该结构来清理代码。

最佳答案

您需要使用构造函数的 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/

相关文章:

c++ - 结构数组的 typedef,其中一个字符数组作为结构的成员

c++ - SetWindowsHookEx 问题的文档

c++ - 在另一个进程中销毁共享的 std::vector

c++ - 有关C++中函数的默认返回类型的查询

c++ - 从不从 std::packaged_task 检索 std::future 的结果是否安全?

c# - C# 中的 C 联合错误未正确对齐或被非对象字段重叠

c++ - c++ 中的 stdexcept 与异常 header

dictionary - 从 dict 初始化不可变结构

struct - 是否有用于构造包含对临时对象的引用的结构的单行语法?

c - 结构 vector c