我想编写一个递归函数,它给出了列表的长度。 为了使其递归,我在List类头中的函数声明中使用此指针作为默认参数。但编译器给我一个错误...... 这是代码:
//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 :(得分:5)
是的,this
只能在功能中使用。
最简单的更改是使用NULL
作为默认值,然后在您的函数中检查NULL
,并使用this
代替