Bu soruya verilen yanıtı okuyarak (Casting a function pointer to another type), gibi işaretçilerin void(*)(B*)
gibi işaretçilere gösterilmesinin güvenli olduğunu anlıyorum, bunları çağırmadan önce onları geri göndermeniz yeterlidir.Bir üye fonksiyon işaretçisini başka bir sınıfa çevirmek ve tekrar geri vermek güvenli midir?
Bu, üye işlev işaretçileri için de çalışır mı? void(B::*)()
'a void(A::*)()
güvenli bir şekilde döküm yapabilir ve onu aramadan önce geri gönderebilir miyim? sistemimde en azından iş gibi görünüyor
örnek kod:
#include <iostream>
struct A {
void f() { std::cout << "called" << std::endl; }
};
struct B {};
int main() {
A instance;
auto ptr = reinterpret_cast<void (B::*)()>(&A::f);
(instance.*(reinterpret_cast<void (A::*)()>(ptr)))();
}
Alakasız, soru türetilmiş sınıf hakkında değil. – SergeyA
@SergeyA - iç çekiş. Bu ** oyuncular hakkında ** ve bu yasal oyunculardan biri. –
Bu, ama soruya hiçbir şekilde cevap vermiyor. Mine ve Mark'ın cevapları var. – SergeyA