【问题标题】:Adding a Facet to a G4TessellatedSolid将水龙头添加到 G4 镶嵌实体
【发布时间】:2019-06-20 19:14:34
【问题描述】:

我正在尝试从 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 中实现这一目标

【问题讨论】:

  • 哎呀,我认为这与我上一个问题相同的错误/遗漏。我需要使用 定义继承的类

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


【解决方案1】:

忘记添加类层次结构的类定义

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 2017-07-05
    • 2021-12-14
    • 2014-10-04
    相关资源
    最近更新 更多