我正在尝试从 Python 向 G4TessellatedSolid 添加一个方面。
我已经定义了一个扩展 G4TriangularFacet 的类 MyG4TriangularFacet,即类定义是
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 中实现这一目标