Как к enable_shared_from_this и родителя и полученный

get_membervalues не определено внутри myclass, поэтому a не будет иметь к нему доступа.

Он определен внутри myproperty, поэтому следующий логический вывод - попытаться добраться до объекта myproperty, связанного с a.data. Поскольку Python хранит функции в myclass в myclass.__dict__, мы можем найти объект свойства следующим образом:

a.__class__.__dict__['data']

И затем вызвать функцию оттуда:

a.__class__.__dict__['data'].get_membervalues()
>>> {'name': 'data', 'cls_name': 'AnotherClass', 'tooltip': 'help'}
31
задан ϹοδεMεδιϲ 11 July 2017 в 09:03
поделиться

1 ответ

Извините, но нет.

проблема состоит в том, что shared_ptr<foo> и shared_ptr<bar1> различные типы. Я не понимаю все, на что это идет под капотом, но я думаю , что, когда конструктор возвращается и присвоен shared_ptr<foo>, внутреннее weak_ptr<bar1> видит, что ничто не указывает на него (потому что только shared_ptr<bar1> увеличил бы счетчик), и сбрасывает себя. Когда Вы звоните bar1::shared_from_this в get_callback, Вы получаете исключение, потому что внутреннее weak_ptr ни на что не указывает.

По существу, enable_shared_from_this только, кажется, работает прозрачно от единого класса в иерархии. Если Вы пробуете реализация его вручную , проблема должна стать очевидной.

14
ответ дан Head Geek 27 November 2019 в 22:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: