J'ai déclaré une fonction d'assistance à une méthode d'une classe I déclarée dans un fichier d'entête, et pour une raison quelconque lorsque je compile le fichier de code source I obtenir une erreur me disant que j'ai déclaré une variable ou un champ comme nul. Je ne suis pas sûr de savoir comment interpréter cela puisque mon but était que la fonction soit déclarée nulle.La fonction void provoque une erreur de compilation "variable ou champ 'funcName' déclaré vide"
Les erreurs du compilateur sont les suivantes:
k-d.cpp:10: error: variable or field ‘insert_Helper’ declared void
k-d.cpp:10: error: ‘node’ was not declared in this scope
k-d.cpp:10: error: ‘root’ was not declared in this scope
k-d.cpp:10: error: expected primary-expression before ‘*’ token
k-d.cpp:10: error: ‘o’ was not declared in this scope
k-d.cpp:10: error: expected primary-expression before ‘int’
L'équivalent de la ligne 10 dans le code ci-dessous est la ligne 5.
Le code source est la suivante:
#include <iostream>
#include "k-d.h" //Defines the node and spot structs
using namespace std;
void insert_Helper(node *root, spot *o, int disc) {
(...Some code here...)
}
void kdTree::insert(spot *o) { //kdTree is a class outlined in k-d.h
insert_Helper(root, o, 0); //root is defined in k-d.h
}
Si n'importe qui peut repérer tout ce qui ferait que le compilateur ne voit pas cela comme une fonction, il serait grandement apprécié. Merci!
P.S. Je n'ai pas marqué cela comme un kdtree parce que je suis sûr que la solution ne dépend pas de cet aspect du code.
Mise à jour:
Voici kd.h:
#ifndef K_D_H
#define K_D_H
// Get a definition for NULL
#include <iostream>
#include <string>
#include "p2.h"
#include "dlist.h"
class kdTree {
// OVERVIEW: contains a k-d tree of Objects
public:
// Operational methods
bool isEmpty();
// EFFECTS: returns true if tree is empy, false otherwise
void insert(spot *o);
// MODIFIES this
// EFFECTS inserts o in the tree
Dlist<spot> rangeFind(float xMax, float yMax);
spot nearNeighbor(float X, float Y, string category);
// Maintenance methods
kdTree(); // ctor
~kdTree(); // dtor
private:
// A private type
struct node {
node *left;
node *right;
spot *o;
};
node *root; // The pointer to the 1st node (NULL if none)
};
#endif
Et p2.h:
#ifndef P2_H
#define P2_H
#include <iostream>
#include <string>
using namespace std;
enum {
xCoor = 0,
yCoor = 1
};
struct spot {
float key[2];
string name, category;
};
#endif
Montrez-nous "k-d.h". – cnicutar
Vous devez publier un exemple de code suffisant pour illustrer le problème. Essayez de l'isoler au strict minimum absolu où l'erreur se produit - 9 fois sur 10, cela résoudra le problème de toute façon, et si ce n'est pas le cas, vous pouvez le poster et quelqu'un devrait repérer l'erreur très rapidement. – Ayjay
Veuillez fournir un exemple que nous pouvons utiliser pour reproduire l'erreur, comme décrit [ici] (http://sscce.org). –