簡體   English   中英

C ++:訪問struct元素的初始化構造函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM