est ici (en partie) mon code:Erreur: Fonction non déclarée dans cette étendue. Aidez-moi?
...
Node<char*>* nodes[count2];//array of pointers to last level
nodes[0] = f1.rootPtr;
processInput(input, f1.rootPtr, nodes, 0, count2);
//I get an error that says this function is not declared in this scope.
return input;
}
void processInput(istream& input, Node<char*>* node, Node<char*>** nodeArray,
int level, int& count)
{
//variables
Node<char*>* aNode = new Node<char*>();
char charArray[150];
...
Quand je lance le programme que je reçois ceci:
Forest.cpp: In function 'std::istream& operator>>(std::istream&, Forest<char*>&)':
Forest.cpp:93:53: error: 'processInput' was not declared in this scope
make[2]: *** [build/Debug/MinGW-Windows/Forest.o] Error 1
make[1]: *** [.build-conf] Error 2
Voici une partie du fichier d'en-tête:
template<typename NODETYPE> class Forest{
/*
* builds a forests consisting of the first and second forest reference
*/
template<NODETYPE>
friend Forest& operator+(Forest<NODETYPE>& f1, Forest<NODETYPE>& f2);
/*
* insert into the output stream a preorder traversal of the input forest
*/
template<NODETYPE>
friend ostream& operator<<(ostream& ostr, const Forest<NODETYPE>& f1);
/*
* extracts a forest from the input stream and builds it for the forest argument variable name
*/
//template<NODETYPE>
friend istream& operator>>(istream& file, Forest<char*>& f1);
/*
*Used with istream to go through input
*/
//template<NODETYPE>
void processInput(istream& input, Node<char*>* nodeBefore, Node<char*> ** nodeArray,
int levelBefore, int& count);
public:
Forest(){
..
Qu'est-ce que est-ce que je fais mal? Pourquoi ai-je cette erreur? Aucun conseil?
Merci!
EDIT:
J'ai essayé ce que vous avez dit, mais il ne fonctionne toujours pas. J'utilise des modèles, alors peut-être que c'est là que se situe mon problème?
tête:
// je conserver ce ?? Quand je le sors, il ne fonctionne pas non plus friend istream & opérateur >> (fichier istream &, Forest & f1);
privé:
ProcessInput void (de istream d'entrée &, Node * noeud, noeud ** nodeArray, niveau d'int, int count &);
fichier .cpp:
modèle istream & opérateur >> (istream d'entrée &, Forêt & f1) {// Code ... ProcessInput (entrée, f1.rootPtr, noeuds, 0 , count2); // ERREUR: Impossible de résoudre identifiant ProcessInput }
/** * Traite l'entrée / Forêt vide :: ProcessInput (istream entrée &, Noeud noeud, noeud ** nodeArray, niveau int, int & count) { // code
Merci encore.
Bien sûr, seule la définition, la déclaration dans la classe elle-même. – Xeo
J'ai essayé ... maintenant je reçois une autre erreur: – Joey
@Xeo: Certainement. J'ai édité pour le rendre un peu plus clair. – Jon