在 Cython 中访问 C++ 类的私有成员变量/函数

Posted

技术标签:

【中文标题】在 Cython 中访问 C++ 类的私有成员变量/函数【英文标题】:Access to private member variables/functions of a C++ class in Cython 【发布时间】:2016-07-08 20:08:34 【问题描述】:

假设我有一个类 Foo:

class Foo 
private:
    std::string bar;
public:
    Foo () 
    Foo (const std::string& bar_)  this->bar = bar_; 
    std::string get_bar ()  return this->bar; 
;

还有一个 Foo python 包装器 FooWrapper.pyx:

from libcpp.string cimport string

cdef extern from "Foo.h":
    cdef cppclass Foo:
        Foo ()
        Foo (string)

是否可以在.pyx文件中访问std::string bar而不修改Foo?

【问题讨论】:

【参考方案1】:

如果您无法在 C++ 中访问私有成员,那么您也无法在 Cython 中访问它。

您可以尝试这样的技巧来覆盖“private”关键字:https://***.com/a/424125

【讨论】:

以上是关于在 Cython 中访问 C++ 类的私有成员变量/函数的主要内容,如果未能解决你的问题,请参考以下文章

C++中类的静态成员变量

解密C++继承属性

C++ 类的继承一(访问控制)

C++ - 如何从同一个类的静态函数访问一个类的私有成员?

C++:有没有办法在不暴露其他私有成员的情况下限制对某些类的某些方法的访问?

C++ - 访问基类的受保护/私有成员