C++ 链表和函数指针

C++ 链表和函数指针,c++,linked-list,function-pointers,C++,Linked List,Function Pointers,我试图学习函数指针和链表 在课堂上(作为私人)我有 及 及 它是用L2的列表调用的 L2.apply_all(triple); 我在这里缺了什么?它似乎对列表中的节点没有任何作用 编辑:问题解决了!作为评论和回答,我从未对节点做过任何事情。我现在反复浏览列表,效果很好,谢谢大家:) 可能不需要在apply\u all()方法中实际存储函数指针。相反,您需要设置一个循环,循环遍历列表中的每个元素,然后为每个元素调用函数指针。根据您的triple()函数判断,您可能也希望将结果存储回列表中,否则它

我试图学习函数指针和链表

在课堂上(作为私人)我有

它是用L2的列表调用的

L2.apply_all(triple);
我在这里缺了什么?它似乎对列表中的节点没有任何作用

编辑:问题解决了!作为评论和回答,我从未对节点做过任何事情。我现在反复浏览列表,效果很好,谢谢大家:)


可能不需要在
apply\u all()
方法中实际存储函数指针。相反,您需要设置一个循环,循环遍历列表中的每个元素,然后为每个元素调用函数指针。根据您的
triple()
函数判断,您可能也希望将结果存储回列表中,否则它将不起任何作用

在不知道list类的其余部分是如何构造的情况下,很难给出这方面的示例代码。但基本上,您会在
apply\u all()
中的一个循环中放入类似的内容:

如果您不知道,C++标准模板库实际上已经包含了所有这些功能。还有

std::list
类,以及
std::transform()
std::for_each()
等函数,它们可以将函数指针(或其他可调用项)应用于每个元素


您可能还想看看C++11中引入的
std::function
模板。它使函数指针更容易使用

您必须迭代列表,并以某种方式对每个列表项应用函数。该代码丢失了。当然,没有对节点做任何处理,您不会在任何地方调用函数指针(我们可以看到)。
void List::apply_all( int (*pointerToFunction) (int)){
   m_pointerToFunction = pointerToFunction;
}
int triple(int i)
{
    return 3*i;
}
L2.apply_all(triple);
void List::apply_all( int (*pointerToFunction) (int)){
    Node *temp = head;
    while(temp){
        temp->value = pointerToFunction(temp->value);
        temp = temp->next;
    }
}
nodevalue = pointerToFunction(nodevalue);