首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python中boost定义的C++虚拟函数

使用Python中boost定义的C++虚拟函数
EN

Stack Overflow用户
提问于 2019-02-02 22:08:06
回答 1查看 50关注 0票数 0

我正在尝试用Python复制一些C++代码,其中python调用用boost定义的C++函数。

我的问题出现在原始C++代码引用虚拟函数的地方。

虚函数用no_init定义,例如

代码语言:javascript
复制
 class_<G4VPhysicalVolume, G4VPhysicalVolume*, boost::noncopyable>
     ("G4VPhysicalVolume", "physical volume class", no_init)
     // ---

如果我尝试在python中使用它们,我得到的错误消息是无法从Python中调用它们。

代码语言:javascript
复制
   <type 'exceptions.RuntimeError'>: This class cannot be instantiated from Python

即,因为no_init定义意味着没有构造器。

所以我的问题是如何在C++中使用Python虚函数。

我见过https://www.boost.org/doc/libs/1_55_0/libs/python/doc/tutorial/doc/html/python/exposing.html#python.class_virtual_functions

但这似乎是关于用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

EN

回答 1

Stack Overflow用户

发布于 2019-02-03 06:08:41

好的,我发现我可以用G4PVPlacment创建一个物理卷。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54493813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档