0

我正在尝试创建一个递归函数,它将向后打印链表中的所有元素。

这是我所做的功能:

void lista::printBack(node *pocetak) {
    if (pocetak==NULL) {
        return ;
    }    
    printBack(pocetak->sljedeci);
    cout<<pocetak->podatak<<" ";
}

现在来回答这个问题。我想设置参数 pocetak 的默认值,以便函数可以打印没有起始值的列表。

但是当我这样做时:

void lista::printBack(node *pocetak = head) 
{
    if (pocetak==NULL) {
        return ;
    }

    printBack(pocetak->sljedeci);

    cout<<pocetak->podatak<<" ";
}

我总是收到一条错误消息:main.cpp:17:19:错误:没有匹配函数调用'lista::printBack()' main.cpp:17:19:注意:候选人是:lista.h:20: 10:注意:void lista::printBack(node*) lista.h:20:10:注意:候选人需要 1 个参数,提供 0

这是我能做到的吗?谢谢你。

4

1 回答 1

3

需要在头文件中指定默认参数(实现lista::printBack(node* pocetak=head)不够)

// lista.h
struct node;
node* head;

struct lista
{
  void printBack(node* pocetak=head);
};

请注意,这意味着您需要在定义类型node* head之前进行有效声明lista,最好的方法是不使用前向声明(见上文)。此外,head将是一个全局变量,这通常不是一个好主意。

编辑:固定类型名称

于 2012-05-14T12:40:19.730 回答