Od std::function
może przechowywać funkcje składowe, więc musi gdzieś przechowywać wskaźnik do instancji obiektu.Jak uzyskać ten wskaźnik ze std :: function?
Jak mogę pobrać wskaźnik this
od std::function
, który zawiera funkcję składową?
Od std::function
może przechowywać funkcje składowe, więc musi gdzieś przechowywać wskaźnik do instancji obiektu.Jak uzyskać ten wskaźnik ze std :: function?
Jak mogę pobrać wskaźnik this
od std::function
, który zawiera funkcję składową?
Obiekt typu std::function
posiada obiekt wywoływalny do wywoływania. Wskaźnik do funkcji członka jest rodzajem obiektu wywoływalnego; można go wywołać za pomocą argumentu odpowiedniego typu klasy oraz dodatkowych argumentów, których potrzebuje. Na przykład:
struct S {
void f(int);
};
std::function<void(S, int)> g(&S::f);
to nazwać, przekazać obiekt typu S
:
S s;
g(s, 3);
nocie, że obiekt std::function
dokłada nie trzymanie przedmiotu S
; to tylko wtedy, gdy go nazwiesz, wskaźnik funkcji zostaje powiązany z obiektem.
Moim celem jest rozwinięcie lambd, które przekazałem jako 'std :: function' do innej funkcji. Jak mogę to zrobić? Przez rozpakowanie mam na myśli podzielić go na "ten" wskaźnik i statyczny wskaźnik funkcji używający 'std :: function :: target' do dalszego przetwarzania. – danijar
@danijar: Dlaczego zamiast tego zamieścisz swój cel w swoim pytaniu? Twoje pytanie ma niewielki sens. – GManNickG
@danijar można utworzyć własny obiekt funkcji, który wiąże wskaźnik "this" i umożliwia pobieranie. – Pubby
Czy obejrzałeś np. http://en.cppreference.com/w/cpp/utility/functional/function? –
@OliCharlesworth. Oczywiście, zrobiłem. Powiedz mi, czy byłem ślepy na odpowiedź. – danijar
Jestem prawie pewny, że tego rodzaju informacje są celowo niewidoczne w bibliotece, a przez to niedostępne w przenośny sposób. –