2010-11-24 45 views
2

J'obtiens une erreur d'attribut en utilisant swig pour envelopper une fonction c pour l'utiliser en code python. J'ai d'autres fonctions à côté de chap qui fonctionne très bien, mais une raison étrange celle-ci ne fonctionnera pas:/_swig_getattr AttributeError

J'essaie d'utiliser CGAL pour déterminer la coque convexe de toutes les particules (chap). Voici la fonction chap et le retraçage:

std::vector<Vec2d> World::chap() const 
{ 
    std::vector<Point_2> ch; 
    std::vector<Point_2> points; 
    std::vector<Vec2d> result; 
    for(size_t i = 0, sz = particles.size(); i < sz; ++i) 
    { 
     points.push_back(Point_2(particles[i]->position.x, particles[i]->position.y)); 
    } 
    CGAL::convex_hull_2(points.begin(), points.end(), std::back_inserter(ch)); 
    for(size_t i = 0, sz = ch.size(); i < sz; ++i) 
    { 
     result.push_back(Vec2d(ch[i].x(), ch[i].y())); 
    } 
    return result; 
} 

Traceback (most recent call last): 
    File "keiro.py", line 64, in <module> 
    if scenario.run(): 
    File "/Users/marcstrauss/Desktop/keiro/scenario.py", line 56, in run 
    dt = self.world.advance() 
    File "/Users/marcstrauss/Desktop/keiro/world.py", line 87, in advance 
    view.add_ch(self.chap()) 
    File "/Users/marcstrauss/Desktop/keiro/fast/physics.py", line 312, in <lambda> 
    __getattr__ = lambda self, name: _swig_getattr(self, World, name) 
    File "/Users/marcstrauss/Desktop/keiro/fast/physics.py", line 34, in _swig_getattr 
    raise AttributeError,name 
AttributeError: chap 

Répondre

2

La fonction est-elle publique? J'ai eu la même erreur en essayant d'appeler une fonction déclarée comme protégée. The SWIG C++ manual note que les fonctions privées et protégées ne seront pas enveloppées