Boost logo

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