我有以下结构:
template <typename T> struct avl_tree {
T data;
int balance;
struct avl_tree <T> *Link[2];
int (*comp)(T, T);
};
我想做的是comp
在运行时将函数指针指向一个有效的函数,然后让所有实例都struct avl_tree<T>
能够访问这个函数。
int compare(int a, int b) {
return ( a - b );
}
是否可以这样做,以便我可以执行以下操作:
avl_tree<int> tree(new avl_tree<int>);
tree = insert(tree, 9);
std::cout << tree->comp(tree->data, 9) << '\n';//Should print 0
终于得到了这个问题的答案。解决方案:
在结构 avl_tree 中:
typedef int (*compare)(T, T);
static compare comp;
以上主要:
template <typename T> int (*avl_tree<T>::comp)(T, T);//Initialise the pointer
主要:
avl_tree<int>::comp = compare;//Set the static member function pointer to the function to use
针对我之前的问题,以下是如何使用它:
avl_tree<int> tree(new avl_tree<int>);
tree = insert(tree, 9);
std::cout << avl_tree<int>::comp(tree->data, 9) << '\n';//Should print 0
简单:D