将构面添加到G4TessellatedSolid

时间:2019-01-27 17:31:14

标签: python c++ python-2.7 boost-python geant4

我正在尝试从Python向G4TessellatedSolid添加一个方面。

我定义了一个MyG4TriangularFacet类,它扩展了G4TriangularFacet,即类定义为

 class MyG4TriangularFacet  :  public  G4TriangularFacet

而相关的构造函数是

 MyG4TriangularFacet(G4ThreeVector v0,
                     G4ThreeVector v1,
                     G4ThreeVector v2);

尝试使用它的python代码如下

 facet = MyG4TriangularFacet(v0g4,v1g4,v2g4)

然后我尝试使用

将其添加到G4TessellatedSolid
 tessellate = G4TessellatedSolid()
 tessellate.AddFacet(facet)

但是我收到以下错误

 tessellate.AddFacet(facet)

 <class 'Boost.Python.ArgumentError'>: Python argument types in
           G4TessellatedSolid.AddFacet(G4TessellatedSolid,MyG4TriangularFacet)           
 did not match C++ signature:
       AddFacet(G4TessellatedSolid {lvalue}, G4VFacet*)

现在,我的印象是G4TriangularFacet实现了虚函数G4VFacet。不是吗?

AddFacet是否希望传递指向G4VFacet的指针的问题? 不确定如何用Python实现这一目标

1 个答案:

答案 0 :(得分:0)

忘记为类层次结构添加到类定义中