需要通过函数指针访问类对象 - 二进制搜索树类创建相关
-
03-07-2019 - |
题
使用递归为二叉搜索树创建遍历。
void inOrder(void (*inOrderPtr)(T&))
{
if(this->left != NULL)
inOrder((*inOrderPtr)(this->left));
inOrderPtr(this->data);
if(this->right != NULL)
inOrder((*inOrderPtr)(this->right));
}
这是功能。现在这显然是错误的。这个函数的调用如下:
first.inOrder(print_vals);
首先是对象,而print vals只是一个打印对象中数据的函数。每个对象有三个值,数据,左和右。如何使用该功能实际访问这些项目?
解决方案
看起来对 inOrderPtr(this-> data)
的调用只是将树节点的 data
成员传递给 print_vals
功能。如果您想访问 left
和 right
元素,请使用 inOrderPtr(* this)
。您必须更改各种声明才能进行编译,例如 inOrderPtr
和 print_vals
的声明。如果没有看到代码的其余部分,很难说你需要将它们更改为。
另一方面,在我看来,你可能想要更像这样写递归调用:
this->left->inOrder(inOrderPtr);
我正在对你的实施做出假设。
不隶属于 StackOverflow