私有成员功能指针

时间:2018-10-15 02:34:35

标签: c++ function pointers lambda tree

我正在从事涉及不同类型树木的作业,因为我的教授为我们提供了以下类型的树木:

class TreeClass
{
private:
    typedef void (*FuncType)(const E& item); 
    class Node
    {
        friend class Tree<E>;
    };
    void traverse (Node* node, FuncType func);
public:
    void traverse(FuncType func); 
};

我们要将func作为lambda函数参数传递给main中的方法调用。我尝试通过在方法调用中定义它来实现它,即

myTree.traverse([] (string nodeData) -> void {cout << nodeData << endl;});

我还尝试将lambda函数定义设置为变量,即

int main(int argc, char** argv)
{
    auto func = [] (string nodeData) -> void
    {
        cout << nodeData << endl;
    };
    Tree<string> myTree;
    myTree.traverse(func);
}

我得到的错误是no matching function call to 'traverse'

我真的不确定我在语法或逻辑上做错了什么,因为我尝试了许多不同的方式和数据类型。谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我必须将lambda函数更改为

auto func = [](const string& nodeData) -> void { cout << nodeData << endl; };