在C++中,静态成员变量在类中仅仅是声明,没有定义,所以要在类的外面定义,实际上是给静态成员变量分配内存。
之所以编译以上代码会出现“无法解析的外部符号 ...::visit..”错误。这是因为静态成员变量visit只是声明还未定义,也就是还没有分配内存,显然是不可以访问的。
static void (*visit)(binaryTreeNode<T>*)=NULL; 既声明又定义了
重新编译后
所以最好还是在类外定义:
template<class T>
void (*linkedBinaryTree<T>::visit)(binaryTreeNode<T>*) = NULL;