gpt4 book ai didi

c++ - 具有 C++ 基类的 Python 子类

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:01:13 26 4
gpt4 key购买 nike

我接触过一些 C++ Python通过SWIG .其中有一个带有单个纯虚函数的基类。

在 Python 中,我导入我的模块并定义一个使用抽象类作为基础的类。

import mymodule
class Foo(mymodule.mybase):
...

在该模块中也是一个管理器类,我想将我新定义的类添加到管理器中。

m = mymodule.mymanager()
m.add(Foo())

add的定义:

void add(mybase* b) { ... }

没有像我预期的那样工作:

TypeError: in method 'mymanager_add', argument 2 of type 'mymodule::mybase *'

我错过了什么?似乎不确定我的 Foo 类是“mybase”。我尝试在 Python 中添加对基类构造函数的调用,但这没有用,说该类是抽象的。

def __init__(self):
mymodule.mybase.__init__(self)

最佳答案

我的猜测是,在 C++ 环境的眼中,Foo 不是从 mybase 派生的。我不确定 SWIG 是否可以解决这个问题,因为它需要对继承的双向理解——Python 类使用 C++ 类作为基础,而 C++ 代码识别继承关系。我会认真研究 Boost.python,因为它似乎支持您所追求的功能。 Here's an entry on wiki.python.org about it.

关于c++ - 具有 C++ 基类的 Python 子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1778487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com