我正在尝试制作一个有向图,所以我制作了一个 Graph 类,它有一个私有边结构和一个私有节点结构。我希望我的边缘有一个节点成员,它是边缘指向的节点,并且我希望我的节点有一个远离它们的所有边缘的列表。
#ifndef DIRECTED_GRAPH_H
#define DIRECTED_GRAPH_H
#include <iostream>
#include <vector>
#include <string>
class Graph {
public:
Graph( const std::string & );
~Graph();
void print();
private:
struct GNode
{
std::string currency_type;
std::vector<GEdge> edges; // line 19
GNode( std::string name ) : currency_type( name ) {}
};
struct GEdge
{
int weight;
GNode * node; // node that the edge is pointed towards
GEdge( int weight, GNode* node ) : weight( weight ), node( node ) {}
};
GNode *source;
std::vector<GNode> nodes;
void add_node( const std::string & currency );
void add_edge( const GNode *& source, const GNode *& destination, int weight );
std::string bellman_ford( const GNode *&source );
};
#include "directed_graph.cpp"
#endif
问题是,在这种情况下GNode
,声明的第一个结构不知道GEdge
存在导致编译器给我错误
directed_graph.h:19: error: ISO C++ forbids declaration of ‘vector’ with no type
我怎样才能解决这个问题?