C ++类在熔融型(c++ class in fused type)

2019-07-03 20:59发布

我希望实现的Python包装了一堆C ++类的。 某处在PXD我有:

cdef cppclass FooImpl1:
    FooImpl1()
    int foo()

cdef cppclass FooImpl2
    FooImpl2()
    int foo()

我不知道如果我可以写在PYX Python包装是这样的:

ctypedef fused FooImpl:
    FooImpl1*
    FooImpl2*

cdef class Foo:
    cdef FooImpl impl
    def __cinit__(self, int selector):
        if selector == 1:
            self.impl = new FooImpl1()
        else:
            self.impl = new FooImpl2()

    def func(self):
        # depending on the object stored in impl FooImpl2::foo or FooImpl1::foo
        # will be called
        return self.impl.foo()

有没有办法来完成预期的行为? FooImpl1和FooImpl2不共享的抽象接口,它们是一类模板特。

Answer 1:

由于这个版本(0.20),用Cython不支持融合类型的班,只在功能参数和变量。 以下是文档。



文章来源: c++ class in fused type
标签: cython