执行错误,求解答~~
头文件:
#ifndef MATRIX_CHENG_H
#define MATRIX_CHENG_H
#include <iostream>
using namespace std;
template<typename T>
class MyMatrix
{
public:
template<size_t row1,size_t col1>
MyMatrix(const T (&a)[row1][col1]);
MyMatrix(T a[],int row1,int col1);
void myprint();
~MyMatrix()
{
delete[] data;
}
private:
T *data;
int row;
int col;
};
template<typename T>
void MyMatrix<T>::myprint()
{
for(int i=0;i!=row*col;++i)
{
cout<<data[i]<<endl;
}
}
template<typename T>
MyMatrix<T>::MyMatrix(T a[],int row1,int col1)
{
row=row1;
col=col1;
int i=0;
T *datatemp=new T(row1*col1);
while(i!=row1*col1)
{
datatemp[i]=a[i];
i++;
}
data=datatemp;
}
template<typename T>
template<size_t row1,size_t col1>
MyMatrix<T>::MyMatrix(const T (&a)[row1][col1])
{
row=row1;
col=col1;
T *datatemp=new T(row1*col1);
for(int i=0;i!=row1;++i)
{
for(int j=0;j!=col1;++j)
{
datatemp[i*col1+j]=a[i][j];
}
}
data=datatemp;
}
#endif
源文件:
#include <iostream>
#include "mymatrix.h"
using namespace std;
int main()
{
int a[3][2]={{1,2},{0,0},{23,43}};
int b[4]={1,2,3,4};
MyMatrix<int> mat(a);
mat.myprint();
return 1;
}
[解决办法]
嗯是的,打印的是其他内存的数据属于非法访问
[解决办法]