[Lemon-user] ISO C++ forbids declaration of «FilterEdge» with no type

Kovács Péter kpeter at inf.elte.hu
Thu Feb 17 11:49:41 CET 2011


Hi,

FilterEdge should be FilterEdges. Does it solve the problem?

Regards,
Peter

> Hello everybody
>
> I'm trying to write a clustering program. The clustering algorithm I'm
> working on is based on graph concepts. Let's say we have two classes :
> - Clustering
> - SuperiorThresholdGraph
> The first one is a representation of the clustering instance and the
> second one is used for computing stuffs.
> When compiling the project, I get the following error :
> .../SuperiorThresholdGraph.h|10|erreur: ISO C++ forbids declaration of
> «FilterEdge» with no type|
> .../SuperiorThresholdGraph.h|10|erreur: expected «;» before «<» token|
> .../SuperiorThresholdGraph.cpp||In constructor
> «SuperiorThresholdGraph::SuperiorThresholdGraph(lemon::ListGraph&,
> double)»:|
> .../SuperiorThresholdGraph.cpp|3|erreur: class «SuperiorThresholdGraph»
> does not have any field named «m_gsupsd»|
> ||=== Build finished: 3 errors, 0 warnings ===|
>
> Here are the headers files:
>
> This is a what i think relevant in Clustering.h :
>
> #ifndef CLUSTERING_H
> #define CLUSTERING_H
>
> #include "lemon/list_graph.h"
> #include "lemon/lgf_reader.h"
> #include "lemon/adaptors.h"
> #include "lemon/connectivity.h"
> #include "lemon/time_measure.h"
> #include <math.h>
>
> using namespace lemon;
> using namespace std;
>
> class Clustering
> {
>
> protected:
> //Members
> ListGraph &m_g; //Complete graph which should contains informations
> about the clustering instance
> string m_name; //Instance name
> ListGraph::NodeMap<string> m_label; //A map of string on the nodes of
> m_g to describe their label
> ListGraph::EdgeMap<double> m_dist; //A map of double on the edges of m_g
> to describe the distances between nodes
> set<double> m_D;
> ...
> public:
> friend class SuperiorThresholdGraph; // The SuperiorThresholdGraph
> methods can access freely the members of Clustering objects
> //Public methods
> Clustering(ListGraph &g, string name); //Constructor
> ...
> };
>
> #endif // CLUSTERING_H
>
> This is SuperiorThresholdGraph.h :
>
> #ifndef SUPERIORTHRESHOLDGRAPH_H
> #define SUPERIORTHRESHOLDGRAPH_H
>
> #include "Clustering.h"
>
> class SuperiorThresholdGraph
> {
> protected:
> ListGraph::EdgeMap<bool> m_filter;
> FilterEdge<ListGraph> m_gsupsd; // <--- THE ERROR IS HERE :
> double m_threshold;
> public:
> SuperiorThresholdGraph(ListGraph &g, const double threshold);
> };
>
> #endif // SUPERIORTHRESHOLDGRAPH_H
>
> And this is SuperiorThresholdGraph.cpp :
>
> #include "include/SuperiorThresholdGraph.h"
>
> SuperiorThresholdGraph::SuperiorThresholdGraph(ListGraph &g, const
> double threshold) : m_filter(g), m_gsupsd(g,m_filter),
> m_threshold(threshold)
> {
> //ctor
> }
>
> Could you please show me a way to fix that ?
>
> Thanks
>
> Cherif, Algeria
>
>




More information about the Lemon-user mailing list