函数参数默认值顺序问题
我在写一个二叉排序树模板类的时候,想在中序遍历的时候指定一个函数(比如打印关键字什么的),
开始的时候这么写
void Inorder( Bstnode<T> *temp=root ,void(*f)=NULL(Bstnode<T> *));//f函数指针
定义如下
template <class T>
void BstTree<T>::Inorder( Bstnode<T>* temp=root,void(*f)=NULL(Bstnode<T>*)){
if(temp != NULL) {
Inorder(temp->lchild);
f(temp);
Inorder(temp->rchild);
}
} // 没有问题
后来在运用中我发现这样用每次想要设定函数值还要把temp人为设定成root很麻烦,于是把2个参数反过来写
void Inorder( void(*f)=NULL(Bstnode<T> *),const Bstnode<T> *temp=root ); //像这样
函数实体部分也该了,但是就出现错误了……
projects\二叉排序树\二叉排序树\bsttree.h(11) : error C2059: 语法错误 : “函数样式转换”
projects\二叉排序树\二叉排序树\bsttree.h(15): 参见对正在编译的类 模板 实例化“BstTree<T>”的引用
projects\二叉排序树\二叉排序树\bsttree.h(11) : error C2059: 语法错误 : “)”
projects\二叉排序树\二叉排序树\bsttree.h(11) : error C2143: 语法错误 : 缺少“)”(在“;”的前面)
不明白是怎么回事,请高人讲解一下,谢谢了