读书人

执行异常求解答~

发布时间: 2012-03-17 19:06:28 作者: rapoo

执行错误,求解答~~
头文件:
#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;

}


[解决办法]
嗯是的,打印的是其他内存的数据属于非法访问
[解决办法]

探讨
谢谢,已解决,不过还是想问下,用()的时候是不是相当于分配了1个sizeof(T)的内存?那我调试的时候为什么还能打印,数据还在,这是为什么?

引用:

T *datatemp=new T[row1*col1];

读书人网 >C++

热点推荐