2017-02-28 82 views
2

我有以下功能:默认`const的载体<int>&id`参数函数

double Fitter(double EBeam, vector<KFParticle> 
&MeasParticle, vector<TLorentzVector> &RecoParticle, 
const vector<int> &id) { 
    do something 
} 

但有时我确实没有想提供的最后一个参数(id矢量)。我需要这样的东西:

double Fitter(..., const vector<int> &id = empty_vector) 

但我不想创建一些静态向量。

回答

5

您可以通过缺省构造一个空向量的内联:

​​

由于id是一个常数参考它会奏效。

+0

它有帮助,谢谢。 – BogdanSikach

+2

如果你的编译器接受'= std :: vector {}',它也会接受'= {}'这使得代码更容易阅读并且不违反DRY。 – Angew

3

在这种情况下,从@Some程序员家伙答案是完美的(请给予好评他,如果你觉得它有用):

​​

如果你发现一个情况下,你不能实现默认,因为它是动态的,你可以写一个过载:

double Fitter(double EBeam, 
       vector<KFParticle> &MeasParticle, 
       vector<TLorentzVector> &RecoParticle, 
       const vector<int> &id) 
{ 
    // ... do something 
} 

double Fitter(double EBeam, 
       vector<KFParticle> &MeasParticle, 
       vector<TLorentzVector> &RecoParticle) 
{ 
    vector<int> id; // you could do something dynamic here instead 
    return Fitter(EBeam, MeasParticle, RecoParticle, id); 
} 
+0

谢谢。我会牢记在心。 – BogdanSikach