我正在尝试为我的类 Matrix 创建一个命名构造函数,输入作为流,我可以从中读取初始化值。
#include <istream>
// ...
class Matrix
{
public:
Matrix(int);
// some methods
static Matrix *newFromStream(istream&);
private:
int n;
std::valarray< Cell > data;
};
该方法应该或多或少像这样实现
Matrix *Matrix::newFromStream(istream &ist) {
// read first line and determine how many numbers there are
string s;
getline( ist, s );
...
istringstream iss( s, istringstream::in);
int n = 0, k = 0;
while ( iss >> k)
n++;
Matrix *m = new Matrix( n );
// read some more values from ist and initialize
return m;
}
但是,在编译时,我在方法的声明中遇到错误(第 74 行是定义原型的地方,第 107 行是开始实现的地方)
hitori.h:74: error: expected ‘;’ before ‘(’ token
hitori.cpp:107: error: no ‘Matrix* Matrix::newFromStream(std::istream&)’ member function declared in class ‘Matrix’
但是,在使用简单参数(如 int)定义和实现命名构造函数时,我不会遇到这些错误。
我错过了什么?任何帮助将不胜感激。