我正在尝试用Python复制一些C++代码,其中python调用用boost定义的C++函数。
我的问题出现在原始C++代码引用虚拟函数的地方。
虚函数用no_init定义,例如
class_<G4VPhysicalVolume, G4VPhysicalVolume*, boost::noncopyable>
("G4VPhysicalVolume", "physical volume class", no_init)
// ---如果我尝试在python中使用它们,我得到的错误消息是无法从Python中调用它们。
<type 'exceptions.RuntimeError'>: This class cannot be instantiated from Python即,因为no_init定义意味着没有构造器。
所以我的问题是如何在C++中使用Python虚函数。
但这似乎是关于用python覆盖虚拟函数。
Boost是1.65.1版本,我只是碰巧找到了一些关于boost和虚拟函数的文档,其中提到了1.55。我不确定它处理虚拟函数的方式是否改变了。
我正在尝试开发一个FreeCAD工作台,虽然FreeCAD正在迁移到Python3的过程中,但每日更新使用的Python版本是Python : 2.7.15rc1。
不确定类的oxygen文档是最新版本,但http://www.apc.univ-paris7.fr/~franco/g4doxy/html/classG4VPhysicalVolume.html上有G4VPhysicalVolume文档。boost的定义与我最初的帖子相同。
提供一个完整且可验证的示例是不可能的,除非有人下载并从源构建FreeCAD和Geant4
发布于 2019-02-03 06:08:41
好的,我发现我可以用G4PVPlacment创建一个物理卷。
https://stackoverflow.com/questions/54493813
复制相似问题