2010-11-24 31 views
2

我得到一個屬性錯誤使用swig包裝一個c函數在python代碼中使用。我還有其他一些函數,旁邊的工作很好,但一些奇怪的原因,這一個將無法正常工作:/_swig_getattr AttributeError

我想用CGAL來確定所有粒子(chap)的凸殼。以下是chap功能和回溯:

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 

回答

2

該功能是否公開?嘗試調用聲明爲Protected的函數時遇到同樣的錯誤。 The SWIG C++ manual注意私人和受保護的功能將不會被包裝