这个类的抽象稀疏矩阵类申明的问题何在??

fz_zhou 2001-08-05 11:35:32
这是用C++表示的一个稀疏矩阵
template <class T> class SparseMatrix
{
private:
int Rows,Cols,Terms;
Trituple <T> smArray[MaxTerms];//用于存矩阵中非零元素的值
//此处有四处错误,分别为
//1.error C2143: syntax error : missing ';' before '<'
//2.error C2501: 'Trituple' : missing storage-class or type specifiers
//3.error C2059: syntax error : '<'
//4.error C2238: unexpected token(s) preceding ';
public:
SparseMatrix(int MaxRow, int MaxCol);
SparseMatrix <T> Transpose();
SparseMatrix <T> Add(SparseMatrix <T> b);
};

template <class T> class Trituple
{
friend class SparseMatrix <T>;
private:
int row,col;//the row and column of sparse matrix T value; //row col 分别表示矩阵的行和列,value 为该行列时的值
};
void main()
{}

到底错误在什么地方呢?运行环境为vc6.0
要怎么改正呢?

...全文
72 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
starfish 2001-08-06
  • 打赏
  • 举报
回复
因为你的Trituple定义在SparseMatrix之后,而SparseMatrix有一个Trituple的成员变量,所以编译器在读到Trituple <T> smArray[MaxTerms];的时候就会出错。
你应该在类SparseMatrix定义之前预先声明Trituple类,即改为:

#define MaxTerms 100

template<class T> class Trituple;

template<class T> class SparseMatrix
{
private:
int Rows,Cols,Terms;
Trituple<T> smArray[MaxTerms];
public:
SparseMatrix(int MaxRow, int MaxCol);
SparseMatrix <T> Transpose();
SparseMatrix <T> Add(SparseMatrix <T> b);
};

template<class T> class Trituple
{
friend class SparseMatrix<T>;
private:
int row,col;
};

void main()
{}

这样就对了,我试过了没有编译错误。其中#define MaxTerms 100 是预定义MaxTerms ,否则你的程序中MaxTerms 没有声明。BTW:你还要实现其中没有实现的那些方法。
我不是大明 2001-08-06
  • 打赏
  • 举报
回复
谢谢starfish(海星)了,这个问题真得让我又想去再学一下C++了!
对于那些实现的代码也写好了,到时候有错,再找你!
 
我不是大明 2001-08-05
  • 打赏
  • 举报
回复
怎么没有人来看的关注一下吧!
学了好多天因为这个搞不定什么都编不下去了!
谢谢先了!
有什么不明白的写上!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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