gpt4 book ai didi

python - 如何使 Swig 发出 C++ 父类(super class)

转载 作者:行者123 更新时间:2023-11-30 05:11:02 25 4
gpt4 key购买 nike

我尝试在 Python 中使用覆盖函数,它们是 Cpp 类的一部分。

class  A {

public:
int func() { return 0; };
A();
};

class B : A {
public:
B();
~B();
};

我使用以下命令生成 Swig python 文件

swig  -python -fvirtual -modern -keyword -w511 -module a_swig -outdir . -c++  -I. a_swig.i

但是我看到正在生成这个 python 文件:

class A(object):
thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
__repr__ = _swig_repr

def func(self):
return _iris_swig.A_func(self)

def __init__(self):
this = _A_swig.new_A()
try:
self.this.append(this)
except __builtin__.Exception:
self.this = this
__swig_destroy__ = _A_swig.delete_A
__del__ = lambda self: None

A_swigregister = _A_swig.A_swigregister
A_swigregister(A)

class B(object):
thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
__repr__ = _swig_repr

def __init__(self, *args, **kwargs):
this = _A_swig.new_B(*args, **kwargs)
try:
self.this.append(this)
except __builtin__.Exception:
self.this = this
__swig_destroy__ = _iris_swig.delete_B
__del__ = lambda self: None
packet_header_iris_swigregister = _iris_swig.packet_header_iris_swigregister
packet_header_iris_swigregister(packet_header_iris)

我想看到 B 从 A 扩展而来,这样我就可以在 python 中使用 b.func()

class B (A):
...

有什么我遗漏的吗?

最佳答案

B 类仅从 A 私有(private)继承,因此 SWIG 无法在 Python 中表示它。将其更改为公共(public)继承,您将看到您希望的关系。

关于python - 如何使 Swig 发出 C++ 父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45317242/

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