Wie kann ich den folgenden Code ändern, um eine schwache_ptr anstelle von shared_ptr zu verwenden und behalten Sie die Fähigkeit, Methodenname anzugeben (wie in Std :: Bind getan)? Es scheint, dass std :: bind schwacher_ptr nicht unterstützt, da er den weak_ptr überprüfen muss.Wie kombiniere ich mit functor mit bind und weak_ptr
void foo::a()
{
m_class.do1(
std::function<void(int)>(
std::bind(&foo::b, shared_from_this(), std::placeholders::_1)));
}
void foo::b(int i)
{
}
Was würden die Semantik dieser hypothetischen bindage sein? –
Nicht sicher, ich verstehe die Frage. Wir möchten, dass der Funktor aufgerufen wird, wenn weak_ptr :: lock einen gültigen shared_ptr zurückgibt. – Lars
Und was würden Sie tun, wenn lock() keinen gültigen gemeinsamen Zeiger zurückgibt? –