iterator problem
Here is graph.hh
#ifndef GRAPH_HH
#define GRAPH_HH 1
#include <list>
#include <vector>
#include <cstddef>
std::list<int>::iterator it;
template<class NodeData, class EdgeData, typename NodeIndex=size_t>
class Graph {
public:
struct Edge {
NodeIndex lo, hi;
EdgeData *data;
Edge() : lo(0), hi(0), data(0) {}
} ;
class Node {
std::list<Edge> edges;
NodeData *data;
} ;
std::list<int >::iterator works;
int fred;
std::list<Edge>::iterator help;
private:
std::vector<Node> nodes;
public:
Graph(NodeIndex nodesNum) : nodes(nodesNum) {}
void setNodeData(NodeIndex ni, NodeData *nd)
{ nodes[ni].data=nd; }
NodeData *getNodeData(NodeIndex ni) const
{ return nodes[ni].data; }
} ; // Graph
#endif
Here is the error message when graph-test.cc #includes it
In file included from graph-test.cc:1:
graph.hh:29: error: type ?std::list<Graph<NodeData, EdgeData, NodeIndex>::Edge, std::allocator<Graph<NodeData, EdgeData, NodeIndex>::Edge> >? is not derived from type ?Graph<NodeData, EdgeData, NodeIndex>?
graph.hh:29: error: expected ?;? before ?help?
Note that my first use of iterator works.
What is the matter with std::list<Edge>::iterator
that is not the matter with std::list<int >::iterator ?
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]