Как реализовать функцию отображения для бинарного дерева поиска строк, если отображение передается как указатель функции на порядок функций?
typedef void (*FunctionType)(TreeItemType& anItem);
void display(TreeItemType& anItem);
void BinarySearchTree::inorder(TreeNode *treePtr,
FunctionType visit)
{ if (treePtr != NULL)
{ inorder(treePtr->leftChildPtr, visit);
visit(treePtr->item);
inorder(treePtr->rightChildPtr, visit);
} // end if
} // end inorder
Я пытался написать что-то вроде:
cout << anItem;
в теле дисплея, но это не работает. TreeItemType является строкой, поэтому мне нужно перегрузить оператор << или оператор = для преобразования из TreeItemType в строку? Я исследовал указатели функций и не могу понять, как использовать: </p>
visit(treePtr->item);
для отображения элемента дерева (который является строкой).
int main()
{
BinarySearchTree tree;
TreeItemType item = "20";
tree.searchTreeInsert(item);
tree.inorderTraverse(display); // call to inorderTraverse calls inorder
return 0; // indicates successful completion
} // end function main
void display(TreeItemType& anItem)
{
cout << anItem;
}
Определение TreeItemType:
typedef string TreeItemType;