|
Boost Users : |
Subject: [Boost-users] Problem in returning value from DFS vistor class.
From: Amanullah Yasin (amanyasin_at_[hidden])
Date: 2009-06-10 08:45:21
Bonjour,Dear all
I am facing general programming related logical error. I want to access
bolean variable of the class by using get method. but it is not giving the
right result. When i read the counter and boolean variable by getcount() and
isPathExist() methods. Each time it returns "0" for counter and false for
boolean.
My code is below
#include "AlgoPC.h"#include <boost/graph/depth_first_search.hpp>
//=============================Depth First
Search===========================class DFSVisitor: public
default_dfs_visitor
{protected:
slBayesianNetwork *pBN;
int nodeA, nodeC;
bool exist;
int counter;
public:
DFSVisitor(slBayesianNetwork *pBN, int nodeA, int nodeC);
~DFSVisitor();
void discover_vertex(slNode u, const slGraph &g);
void resetCounter();
bool isPathExist();
int getCounter();
};//--------------------------------------------------------------------------
DFSVisitor::DFSVisitor(slBayesianNetwork *pBN, int nodeA, int nodeC)
{
this->pBN = pBN;
this->nodeA = nodeA;
this->nodeC = nodeC;
this->exist = false;
this->resetCounter();
}//--------------------------------------------------------------------------
DFSVisitor::~DFSVisitor() {
}//--------------------------------------------------------------------------void
DFSVisitor::resetCounter()
{
this->counter = 0;
}//--------------------------------------------------------------------------
//--------------------------------------------------------------------------void
DFSVisitor::discover_vertex(slNode u, const slGraph &g)
{
this->counter++;
unsigned int varIdx = this->pBN->getVariableIndex(u);
if ((varIdx == this->nodeC ) && ((this->counter) > 2))
{
this->exist = true;
cout<<"\n "<<counter<<" node = "<< varIdx+1;
}
}//--------------------------------------------------------------------------int
DFSVisitor::getCounter()
{
return this->counter;
}//--------------------------------------------------------------------------bool
DFSVisitor::isPathExist()
{
return this->exist;
}
====================== main program =======================
cout<< "\n a = "<<a<<" c = "<<c;
DFSVisitor vis(this->pBN, a , c);
depth_first_search((slGraph&)this->pBN->get_graph(),visitor(vis).root_vertex(vertex(a,
this->pBN->get_graph())));
cout<<"\n counter is = "<<vis.getCounter()<<" Path exist = "<<
vis.isPathExist();
======================== out put =========================
counter is = 0 path exist = 0 (false)
-------------------------------------------------------
I will be thankful to you for guiding me.
Best Regards
Amanullah YASIN
Master2 (ECD)
Ecole Polytechnique
Université de Nantes, France.
Mob# 06 47 62 89 96
Fix # 02 72 00 26 45
amanyasin_at_[hidden]
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net