2017-02-28 78 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