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可能是什么,它可能会或可能不会产生真正的区别。不过,初始化器列表是初始化类成员的标准方法,如果可能,您应该使用它