在C++中,靜態成員變量在類中僅僅是聲明,沒有定義,所以要在類的外面定義,實際上是給靜態成員變量分配內存。
之所以編譯以上代碼會出現“無法解析的外部符號 ...::visit..”錯誤。這是因為靜態成員變量visit只是聲明還未定義,也就是還沒有分配內存,顯然是不可以訪問的。
static void (*visit)(binaryTreeNode<T>*)=NULL; 既聲明又定義了
重新編譯后
所以最好還是在類外定義:
template<class T>
void (*linkedBinaryTree<T>::visit)(binaryTreeNode<T>*) = NULL;