J'essaie de créer un constructeur nommé pour ma classe Matrix, avec une entrée en tant que flux à partir de laquelle je peux lire les valeurs pour l'initialisation.Problème avec le constructeur nommé avec istream comme argument
#include <istream>
// ...
class Matrix
{
public:
Matrix(int);
// some methods
static Matrix *newFromStream(istream&);
private:
int n;
std::valarray<Cell> data;
};
La méthode doit être mis en œuvre plus ou moins comme celui-ci
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;
}
Cependant, lors de la compilation, je reçois une erreur dans la déclaration de la méthode (ligne 74 est l'endroit où le prototype est défini, et 107 où cependant, je ne suis pas la mise en œuvre commence)
hitori.h:74: error: expected ‘;’ before ‘(’ token
hitori.cpp:107: error: no ‘Matrix* Matrix::newFromStream(std::istream&)’ member function declared in class ‘Matrix’
Ces erreurs, lors de la définition et la mise en œuvre d'un constructeur nommé avec un paramètre simple, comme un int.
Qu'est-ce qui me manque? Toute aide serait grandement appréciée.
Est-ce que 'std ::'? – AndiDog
oui, vous avez raison. – mvaz