如下简单的C++代码为何出错?

#include <iostream>
class A{
   public:
   A():root(NULL){}
   int *root;
   void Search(int* i,int* j=root){}
};              

int main(int argc,char **argv)
{       
   A a;
} 

main.cpp:5:8: 错误:对非静态数据成员‘A::root’的无效使用
main.cpp:6:29: 错误:从这个地方

void Search(int* i,int* j=root){}

默认参数一般是常量表达式吧,像你这样应该不行。