という名前のメンバーを持っていません。頂点で私はエッジで送信し、エッジを介してターゲットを変更しようとしますが、クラスEdgeのコンパイラエラーが発生していますtargetという名前のメンバーがありません。C++コンパイラのエラークラスは、頂点への参照がターゲットと呼ばれている私は、クラスと呼ばれるエッジと私のエッジクラスに <p>頂点</p>と呼ばれるクラスを持っている
私Edge.hが
#include "Vertex.h"
class Edge
{
public:
Edge *data;
Edge *next;
Vertex *target;
Edge();
Edge(Edge *x);
Edge(Vertex *x);
void print();
};
私は頂点が
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’
EdgeがEdge.cppで宣言されている場合、その宣言はVertex.cppで使用できなくなります。 – Will
Vertex.cppでEdge.hを埋め込んでいますか?スタブを持つだけで、 "タイプがまだ定義されていないため、Edgeにtargetという名前のメンバがありません"というエラーが発生する可能性があります。 – Seth
これらのファイルが相互に含まれている場合、本当に別々のヘッダーに入れる必要がありますか? VertexとEdgeのようなサウンドは密接に結合されているので、それらを同じファイルに保存することを検討する必要があります。 – Falmarri