#include
using namespace std;
template
class max
{
private:
T** num;
int r,l;
public:
max()
{
printf("输入矩阵的行数及列数: ");
scanf("%d %d",&r,&l);
printf("依次输入矩阵的元素:\n");
num=(T**)malloc(sizeof(T*)*r);
for(int i=0;i
num[i]=(T*)malloc(sizeof(T)*l);
for(int j=0;j
cin>>num[i][j];
}
}
}
friend void print(max
{
printf("矩阵共%d行%d列:\n",a.r,a.l);
for(int i=0;i
for(int j=0;j
cout<
printf("\n");
}
}
};
int main()
{
max
print(mi);
return 0;
}
如上就可以了。
错误主要是输入的格式问题。
scanf("%d",&num[i][j]);
这种是只可以输入整数的。
改成
cin>>num[i][j];
如有问题可以空间留言,或hi留言。
楼主如果要坚持 scanf()
可使用模板的中级技术:指定特化模板类的成员函数
具体代码如下:
template
class max
{
private:
T** num;
int r,l;
public:
max()
{
printf("输入矩阵的行数及列数: ");
scanf("%d %d",&r,&l);
printf("依次输入矩阵的元素:\n");
num=(T**)malloc(sizeof(T*)*r);
for(int i=0;i
num[i]=(T*)malloc(sizeof(T)*l);
for(int j=0;j
ReadData(i, j);
}
}
}
friend void print(max
{
printf("矩阵共%d行%d列:\n",a.r,a.l);
for(int i=0;i
for(int j=0;j
cout<
printf("\n");
}
}
// 这个重要,对不同类型数据输入,用不同的办法!
void ReadData(int i, int j)
{
// 这里,用模板高级语法来特化
}
};
// 特化整型数据输入
template <>
void max
{
scanf("%d",&num[i][j]);
}
// 特化浮点型数据输入
template <>
void max
{
scanf("%f",&num[i][j]);
}
int main()
{
max
print(intData);
max
print(floatData);
return 0;
}