编写一个矩阵模版的问题

lovelyhawk 2003-06-20 09:24:15
template<class T>
class Matrix
{
public:
Matrix(int row,int column)
{
m_Row=row;
m_Column=column;
m_Head=new T[row*column];
}
T GetValue(int row,int column)
{
return m_Head[row*m_Column+column];
}

void Set(int row,int column,T value)
{
m_Head[row*m_Column+column]=value;
}

Matrix(const Matrix<T> &matrix)
{
m_Row=matrix.m_Row;
m_Column=matrix.m_Column;

m_Head=new T[m_Row*m_Column];

for(int i=0;i<m_Row*m_Column;i++)
m_Head[i]=matrix.m_Head[i];
}

int GetRow() const
{

return m_Row;
}

int GetColumn() const
{
return m_Column;
}

friend const Matrix<T> operator+(const Matrix<T> &matrix1,const Matrix<T> &matrix2);



virtual ~Matrix()
{
delete []m_Head;
}
private:

T *m_Head;
int m_Column;
int m_Row;
};

template<class T>
const Matrix<T> operator+(const Matrix<T> &matrix1,const Matrix<T> &matrix2)
{

if( matrix2.GetRow() == matrix1.GetRow() && matrix2.GetColumn() == matrix1.GetColumn())
{
Matrix<T> matrix(matrix1.GetRow(),matrix1.GetColumn());
for(int i; i<matrix2.GetRow(); i++)
{
for(int j=0; j<matrix2.GetColumn(); j++)
{
//int column=
T sum=matrix1.GetValue(i,j)+matrix2.GetValue(i,j);
matrix.Set(i,j,sum);

}
}

return matrix;

}
}



当我用到operator+ 的时候,编译不通过,怎么回事
...全文
18 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
blas 2003-06-20
  • 打赏
  • 举报
回复

T GetValue(int row,int column)
改成
T GetValue(int row,int column) const
lovelyhawk 2003-06-20
  • 打赏
  • 举报
回复
上面int i=0已经改过
但是它的错误提示是
error C2662: 'GetValue' : cannot convert 'this' pointer from 'const class Matrix<int>' to 'class Matrix<int> &'
Conversion loses qualifiers
G:\VC project\Heeb\HeebView.cpp(115) : see reference to function template instantiation 'const class Matrix<int> __cdecl operator *(const class Matrix<int> &,const class Matrix<int> &)' being compiled
Error executing cl.exe.
dlqcsdn 2003-06-20
  • 打赏
  • 举报
回复
把你的错误信息贴出来撒,要不怎么晓得 那里错了
现在可以肯定的错误有:
for(int i; i<matrix2.GetRow(); i++) 处,int i 后面要赋初值,如:int i =0;

private:

T *m_Head;
int m_Column;
int m_Row;
这几个变量在 构造函数里面能通过吗,这是private 的

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧