【发布时间】: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