今天在学习C++的时候遇到一个问题,就是编译的时候总是提示一个一个错误,错误信息如下: error C2087: '<Unknown>' : missing subscript 源代码如下: #include<iostream.h>#include<stddef.h>template<int R,int C,typename T>int init(T a[R][C]){ for(int i=0;i<R;i++) for(int j=0;j<C;j++) a[i][j]=i*j; for(int k=0;k<R;k++) for(int l=0;l<C;l++) { cout<<"k="<<k<<"l="<<l<<endl; cout<<a[k][l]<<endl; } return 1;}int main(){ int a[10][20]; init<10,20,int>(a); cin.get(); return 0;} 检查了半天才发现是因为编译器不支持动态数组的缘故,函数在应用时参数要采用指针的格式。 现将代码修改如下: #include<iostream.h>#include<stddef.h>template<int R,int C,typename T>int init(T (*a)[C]){ for(int i=0;i<R;i++) for(int j=0;j<C;j++) a[i][j]=i*j; for(int k=0;k<R;k++) for(int l=0;l<C;l++) { cout<<"k="<<k<<"l="<<l<<endl; cout<<a[k][l]<<endl; } return 1;}int main(){ int a[10][20]; init<10,20,int>(a); cin.get(); return 0;} 解决此问题浪费了很长时间,还希望大家共勉

评论