C++ 将函数参数直接传递给类变量

C++ 将函数参数直接传递给类变量,c++,function,struct,constructor,C++,Function,Struct,Constructor,我有一个类lazy\u segment\u tree。这是当前的构造函数 template<typename T> struct lazy_segment_tree{ int n; int H; T base; vector<T> segtree; vector<T> lazytree; T (*join)(T,T); T (*assign)(int,T,T); lazy_segment_tree

我有一个类
lazy\u segment\u tree
。这是当前的构造函数

template<typename T>
struct lazy_segment_tree{
    int n;
    int H;
    T base;
    vector<T> segtree;
    vector<T> lazytree;
    T (*join)(T,T);
    T (*assign)(int,T,T);
    lazy_segment_tree(vector<T> &seq, T (*merge)(T,T), T (*create)(int, T,T), T defvalue){
        join=merge;
        assign=create;
        base=defvalue;
        n=seq.size();
    }
};
模板
结构惰性段树{
int n;
int-H;
T基;
向量树;
向量懒虫树;
T(*连接)(T,T);
T(*赋值)(int,T,T);
延迟段树(向量和序列,T(*合并)(T,T),T(*创建)(int,T,T),T defvalue){
加入=合并;
分配=创建;
基数=定义值;
n=序号大小();
}
};

我不能直接将构造参数设置为类变量中的值吗?

我不能100%确定“直接”是什么意思

但在这种情况下,您应该使用初始值设定项列表来初始化成员变量。有关初始值设定项列表的更多信息

应用于代码时,构造函数现在看起来如下所示:

lazy_segment_tree(vector<T> &seq, T (*merge)(T,T), T (*create)(int, T,T), T defvalue)
    : join(merge)
    , assign(create)
    , base(defvalue)
    , n(seq.size())
{}
lazy_段_树(vector&seq,T(*merge)(T,T),T(*create)(int,T,T),T defvalue)
:加入(合并)
,分配(创建)
,基本值(defvalue)
,n(序号大小())
{}
在原始代码中,所有成员都是在类初始化期间首先默认构造的。然后,调用构造函数的主体,使用“=”复制并分配构造函数参数

使用初始值设定项列表时,成员直接使用指定参数构造

取决于T可能是什么,它可能会或可能不会产生真正的区别。不过,初始化器列表是初始化类成员的标准方法,如果可能,您应该使用它