我有 C++ 代码(不是我的,所以它不可编辑)。问题在于扩展受保护的函数和类。
#include "ExtraClass.h"
...
MyClass::MyClass()
{
...
protected:
bool Func{}
ExtraClass m_Foo;
...
}
我需要在 Python 中访问 m_Foo 方法和受保护的函数,例如 Func( )
from MyClass import *
bar = MyClass()
bar.m_Foo.Run() //something like this
但有一个编译器错误:*error: 'ExtraClass MyApp::m_Foo' is protected*
PS。如果我更改为 public 保护(仅供尝试)。我只能在只读模式下访问 *m_Foo*:
class_<MyClass>("MyClass", init<>())
.def_readonly("m_Foo", &MyClass::m_Foo)
更改为 *def_readwrite* 会导致编译器错误:
/boost_1_52_0/boost/python/data_members.hpp:64:11:错误:'<em>中的'operator='不匹配(((ExtraClass)c)+((sizetype)((const boost :: python :: detail::member
<ExtraClass, MyClass
>*)this)->boost::python::detail::member<ExtraClass, MyClass
>::m_which)) = d'</p>
感谢您的任何帮助!