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 に答える