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