我已经尝试了很多方法来找出这个错误,但我仍然是一个初学者,无法弄清楚。我已经完全按照我讲义中的方式做了。我们需要显示矩阵的输出,但由于一些错误,我的程序卡住了。它说,例如,star
尚未在此范围内声明。我试过删除using namespace std;
,我试过改变头文件,但仍然没有解决方案。
#include <iostream>
#include <stdlib.h>
#include <iomanip>
using namespace std;
class Matrix
{
private:
int numRows;
int numCols;
float elements[3][3];
public:
Matrix (int rows=0, int cols=0 )
{
numRows=rows;
numCols=cols;
}
friend ostream& operator<<(std::ostream&,Matrix&);
friend istream& operator>>(std::istream&,Matrix&);
friend ostream& spaceFirst(std::ostream&);
friend ostream& spaceBetween(std::ostream&);
friend ostream& line(std::ostream&);
friend ostream& newline( ostream&);
friend ostream& star(std::ostream &);
friend ostream& sound(std::ostream&);
};
istream&operator>>(istream&input, Matrix&m)
{
for (int i=0;i<m.numRows; i++)
{
for (int j=0;j,m.numCols;j++)
{
input>>m.elements[i][j];
}
}
return input;
}
//defining the operator<<
ostream&operator<<(std::ostream &output, Matrix&m)
{
for (int i=0;i<60; i++)
{
if(i==30)
{
output<<"Displaying th Matrix:";
}
else
{
output<<star;
}
}
output<<newline;
for(int r=0;r<m.numRows;r++)
{
output<<spacefirst<<line;
for (int c=0;c<m.numCols;c++)
{
output<<spaceBetween<<m.elements[r][c]<<sound<<spaceBetween;
}
output<<spaceBetween<<line;
output<<newline;
}
output<<newline;
return output;
}
ostream & spacefirst(std::ostream & output)
{
output<<setw(33);
return output;
}
std::ostream & spaceBetween(std::ostream & output)
{
output<<setw(4);
return output;
}
std::ostream & line(std::ostream & output)
{
output<<"|";
return output;
}
std::ostream & newline(std::ostream & output)
{
output<<endl;
return output;
}
std::ostream & star(std::ostream & output)
{
output<<"*";
return output;
}
std::ostream & sound(std::ostream & output)
{
output<<"\a";
return output;
}
int main()
{
Matrix matrix(3,3);
cin>>matrix;
cout<<matrix;
system("Pause");
return 0;
}