我有C++代碼(不是我的,所以它是不可編輯的)。問題是擴展受保護的功能和類。擴展保護功能boost :: python
#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
,但有一個編譯器錯誤: *錯誤: 'ExtraClass MyApp的:: m_Foo' 是保護*
PS。如果我改變保護與公衆(只爲嘗試)。我可以訪問* 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: error: no match for ‘operator=’ in ‘(((ExtraClass)c) + ((sizetype)((const boost::python::detail::member
<ExtraClass, MyClass
>*)this)->boost::python::detail::member<ExtraClass, MyClass
>::m_which)) = d’
感謝您的幫助!
你應該提供更多的細節,例如人們可以真正編譯(以便產生準確的錯誤)。 –