2013-10-22 105 views
-3

我想寫一個遞歸函數,給我一個列表的長度。 爲了使其遞歸,我使用這個指針作爲List類頭部中函數聲明中的默認參數。但是,編譯器給我一個錯誤... 這是代碼:[C++]這作爲默認參數

//Header file 
#include "Nodo.h" 

template < class Tipo > 

class Lista 
{ 

    private: 
     Nodo<Tipo>* Prox; 

    public: 
     Lista(); 

     bool ListaVuota(); 

     int DimensioneLista(Lista<Tipo>* = this); 

     void InserisciInCoda(Tipo); 

}; 

//CPP file 

template< class Tipo > 

int Lista<Tipo>::DimensioneLista(Lista<Tipo>* lista) 

{ 

    if(lista->ListaVuota()) 
     return 0; 
    else 
     return 1+DimensioneLista(lista); 

} 
+0

什麼錯誤,在什麼線? – Philipp

回答

5

是,this只能函數中使用。

最簡單的變化是使用NULL爲默認值,而不是,然後在功能檢查NULL,並使用this代替

+5

更簡單,一個重載,所以不需要運行時檢查:'int DimensioneLista(){return DimensioneLista(this);}' –

+0

@MikeSeymour你可能想要這個單獨的答案。 – Angew