find_nearest_nth
    Gonsolo 
    gonsolo at gmail.com
       
    Fri Jul 11 12:59:02 UTC 2008
    
    
  
Hi!
I had to declare two operators in my predicate to get it working:
#include "kdtree++/kdtree.hpp"
class A
{
public:
         float f;
};
typedef KDTree::KDTree<3, A, std::pointer_to_binary_function< 
A,int,float> > Atree;
inline double tac( A a, int k ) { return a.f; }
struct not_me
{
         A me;
         not_me( A m ) : me( m ) {}
         bool operator()( KDTree::_Node<A> const * n ) const { return 
true; }
         bool operator()( const A & n ) const { return true; }
};
Atree::iterator find_nearest()
{
         Atree tree;
         Atree::iterator it = tree.begin();
         A tmp = *it;
         Atree::const_iterator found = tree.find_nearest_if( tmp, 10.f, 
not_me( tmp ) ).first;
         assert( it != found );
         return found;
}
Note that I had to declare two operators, one with a const& and a second 
one with "KDTree::_Node<A> const*".
Without the first operator compilation fails at /kdtree++/node.hpp:367,
without the second one it fails at kdtree++/kdtree.hpp:494.
Is this intended? I find this very inconvenient.
Paul Harris wrote:
> this is not expected,  perhaps Sylvain has the time to look into this?
A second thing is that I think calling a class _and_ a namespace KDTree
very disturbing. I took me a long time to find out that "KDTree::_Node" is
not a member.
g
    
    
More information about the libkdtree-devel
mailing list