递归函数中的函数回调

问题描述 投票:0回答:0

我正在做一些 C++ 练习来学习这门语言。目前,我正在研究线性数据结构,我被要求在没有额外数组 o 结构的情况下在链表中实现排序。现在,我想在 iterate 函数中使用回调来灵活调用

print
函数来检查
findMin
的值以找到确定排序基数的最小值。我阅读了这篇关于回调的非常有用的指南 C/C++ 回调 stackoverflow post,但我无法在
iterate
函数内的递归调用中引用回调。很高兴得到一些帮助来解决代码中的注释显示的问题,但是如果你们让我知道我需要回顾/研究哪个概念,那将对建立回调知识基础更有帮助。

干杯!

/* Implement sorting in a dynamic linked list without using an additional array or data structure.*/

#include <iostream>

class List{
  typedef struct Node{
    int data;
    Node* next = nullptr;
  }node;
  public:
    List(int data);
    ~List();
    void add(int data);
    void iterate(Node * node, void(*func)());
  private:
    int min = 0;
    Node* root;
    Node* it;
};

List::List(int data){
  root->data = data;
  it = root;
}

List::~List(){}


void List::iterate(Node * node, void(*func)()){
  func();//prints or finds min 
  if(node->next == nullptr)
    return;
  iterate(node->next,&func()); //--compiler says it can't get an address of a rvalue type void
}

int main(){
  List list(8); 
  list.add(9);
  list.add(7);
  list.add(4);
  list.add(3);

  return 0;
}
c++ recursion callback
© www.soinside.com 2019 - 2024. All rights reserved.