我正在从事涉及不同类型树木的作业,因为我的教授为我们提供了以下类型的树木:
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'
我真的不确定我在语法或逻辑上做错了什么,因为我尝试了许多不同的方式和数据类型。谢谢您的帮助。
答案 0 :(得分:0)
我必须将lambda函数更改为
auto func = [](const string& nodeData) -> void
{
cout << nodeData << endl;
};