我正在尝试学习C ++,我有一个任务,用这个函数做一些打印,我不明白如何使用ostream。有人可以帮我吗?
void Matrix::printMatrix( ostream& os = cout ) const{
for(int i=0; i<n; i++)
for(int j=0; i<m; j++)
os<<elements[i][j]<<"\n";
}
我试过这样做,但它给我一些错误,我不知道如何处理这个问题。 错误:
Matrix.cpp:47:48:error:给出'void Matrix :: printMatrix(std :: ostream&amp;)const'[-fpermissive]的参数1的默认参数 在Matrix.cpp中包含的文件中:8:0: Matrix.h:25:10:错误:在'void Matrix :: printMatrix(std :: ostream&amp;)const'[-fpermissive]
之前的规范之后答案 0 :(得分:6)
你应该不在声明和定义中指定函数的的默认参数:
class Matrix
{
// ...
// Default argument specified in the declaration...
void printMatrix( ostream& os = cout ) const;
// ...
};
// ...so you shouldn't (cannot) specify it also in the definition,
// even though you specify the exact same value.
void Matrix::printMatrix( ostream& os /* = cout */ ) const{
// ^^^^^^^^^^^^
// Remove this
...
}
或者,您可以在定义中保留默认参数规范,并在声明中省略它。重要的是你两者都没有。
答案 1 :(得分:3)
该函数有一个输出流作为参数,默认情况下具有标准输出(std::cout
)(尽管在函数定义中未正确指定,但未在声明中指定)。你可以这样做:
// use default parameter std::cout
Matrix m + ...;
m.printMatrix();
// explicitly use std::cout
m.printMatrix(std::cout);
// write to a file
std::ofstream outfile("matrix.txt");
m.printMatrix(outfile);