[C++]这是默认参数

Mau*_*lma -3 c++ parameters list this

我想写一个递归函数,它给我一个列表的长度.为了使其递归,我在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);

}
Run Code Online (Sandbox Code Playgroud)

ben*_*ous 5

是的,this只能在功能中使用.

最简单的变化是使用NULL作为默认值来代替,然后检查NULL你的功能,并使用this替代

  • 更简单,一个重载,所以不需要运行时检查:`int DimensioneLista(){return DimensioneLista(this);}` (5认同)