compilateur c++ classe d'erreur n'a pas de membre nommé

J'ai une classe appelée Bord et une classe appelée Sommet

dans mon Edge classe il y a une référence à un Sommet appelé cible. au Sommet j'ai envoyer un Bord et essayer de changer la cible à travers le Bord mais j'ai une erreur de compilation, de classe de Bord n'a pas de membre nommé cible.

mon Bord.h est

#include "Vertex.h"

class Edge
{
  public:
   Edge *data;
   Edge *next;
   Vertex *target;

   Edge();
   Edge(Edge *x);
   Edge(Vertex *x);

   void print();

};

l'erreur est causée par le présent code dans Vertex.cpp

Vertex::Vertex(Edge *x)
{
  name = x->target->name;
  next = x->target->next;
  mark = x->target->mark;
  previous = NULL;
  next = NULL;
}

l'erreur exacte lorsque j'essaie de compiler le Sommet est

 g++  -g -I.  -c -o Vertex.o Vertex.cpp
In file included from Vertex.h:3,
                 from Vertex.cpp:3:
Edge.h:10: error: ISO C++ forbids declaration of Vertex with no type
Edge.h:10: error: expected ‘;’ before ‘*’ token
Edge.h:14: error: expected ‘)’ before ‘*’ token
Vertex.cpp: In constructor Vertex::Vertex(Edge*)’:
Vertex.cpp:26: error: class Edge has no member named target
Vertex.cpp:27: error: class Edge has no member named target
Vertex.cpp:28: error: class Edge has no member named target
  • Si le Bord est déclaré dans Edge.cpp, puis la déclaration ne sera pas disponible à Vertex.cpp.
  • Avez-vous inluded Bord.h en Vertex.cpp? L'erreur pourrait être "Edge n'a pas de membre nommé de la cible, car le type n'est pas encore défini" juste un coup de poignard.
  • Si ces fichiers comprennent les uns les autres, ont-ils vraiment besoin d'être dans des en-têtes? Des sons comme le Sommet et le Bord sont étroitement couplés, vous devriez envisager de les garder dans le même fichier.
  • Autre chose: quelqu'un pourrait avec le droit des droits de modifier l'étiquette complier à "compilateur"? De préférence, verrouillage "compilateur" d'une certaine manière, de sorte que personne d'autre ne peut tomber dans cette orthographe piège?
  • nous montrer plus de code, collez Vertex.h et Edge.cpp
InformationsquelleAutor John Marcus | 2010-12-06