我为加权方案实现了一个类,并在类中创建了4个具有不同数量参数的构造函数。当我尝试使用特定构造函数的参数调用构造函数时,没有参数被调用。我无法理解为什么会发生这种情况。构造函数的默认的构造函数,而不是参数化的构造函数
定义:
593 UnigramLMWeight(double param_log_,int select_smoothing_,double param_smoothing1_,double param_smoothing2_)
594 : select_smoothing(select_smoothing_), param_log(param_log_), param_smoothing1(param_smoothing1_),
595 param_smoothing2(param_smoothing2_)
596 {
构造的呼唤:
79 enquire.set_weighting_scheme(Xapian::UnigramLMWeight(double(322.0),int(2),double(2000.0),double(2.0)));
但我已经检查其设置的值从默认的构造函数。
任何人都可以帮助我为什么这个默认的构造函数被调用,或者是每次默认的构造函数被调用后参数构造函数或参数被转移到其他类型和构造函数尝试找到这样的构造函数,但无法找到这样的构造函数并最终调用默认的构造函数。
set_weigthing方案的准则是:
926 Enquire::set_weighting_scheme(const Weight &weight_)
927 {
928 LOGCALL_VOID(API, "Xapian::Enquire::set_weighting_scheme", weight_);
929 // Clone first in case doing so throws an exception.
930 Weight * wt = weight_.clone();
931 swap(wt, internal->weight);
932 delete wt;
933 }
执行set_weighing方案集合方法调用克隆功能,做到这一点是问题的根本职高当克隆默认构造函数被调用,是这样吗? 这是理由吗?
HM,你想用什么语言用的? C#,C++和C是相当不同的。它不能是C(因为你正在说对象),'''在'正常'的C#代码中很少见......我怀疑你想要C++,但是你的标签很难告诉 – Crisfole
请提供一个完整的,最小的示例程序来演示问题。 –
@ChristopherPfohl其C++抱歉,更正了标签...对不起,最初添加这些标签 – samuelhard