У меня есть код 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
но есть ошибка компилятора: *ошибка: ‘ExtraClass MyApp::m_Foo’ защищен*
PS. Если я поменяю защищенный на общедоступный (просто для пробы). Я могу получить доступ к *m_Foo* только в режиме только для чтения:
class_<MyClass>("MyClass", init<>())
.def_readonly("m_Foo", &MyClass::m_Foo)
Изменение на *def_readwrite* привело к ошибке компилятора:
/boost
#include "ExtraClass.h" ... MyClass::MyClass() { ... protected: bool Func{} ExtraClass m_Foo; ... }
52_0/boost/python/data_members.hpp:64:11: ошибка: нет совпадения для 'operator=' в '(((ExtraClass)c) + ((sizetype)((const boost: :python::detail::member<ExtraClass, MyClass
>*)this)->boost::python::detail::member<ExtraClass, MyClass
>::m_what)) = d'
Спасибо за любую помощь!