前段时间放出了BREW上模拟java数组的代码,这几天将那个代码使用g++进行编译,结果发现出错了。除去未找到函数声明的错误,有一个关于模板的默认参数的错误。原来的代码类似下面:
template < typename T, int alength = 0 > class ARRAY { public: typedef ARRAY< T, alength > ARRAY_TYPE; T* buf; int length; //.... ARRAY( T* abuf, int alength ): buf( NULL ) { if( alength == 0 ) { buf = NULL; length = 0; return; } buf = abuf; length = alength; } //.... }
如果使用g++进行编译的话,在ARRAY( T* abuf, int alength ): buf( NULL )处会出现关于alength的错误。但使用vc或者ads的编译器则不会出现。解决的方法就是不要将模板中的默认参数用到函数中。给自己一个提醒,以后写模板的时候需要注意一下。
PS:谁如果知道如何在指定的文本中取消自动链接的话,麻烦请告诉我。
ADD:
作者已经更新了这个问题