특정 클래스 유형의 C++ 클래스 비 정적 멤버에 대한 함수 포인터를 만드는 방법에 대한 예제가 많이 있습니다. 그러나, 타입 클래스에서 작동하는 포인터를 사용해야합니다. 아이디어를 설명하기 위해 나는 의사적인 예를 썼다.모든 클래스 유형의 비 정적 멤버 함수에 대한 C++ 함수 포인터
class A
{
public:
A(){} //constructor
void callMe() { /* do something */ }
};
class B
{
public:
B(){} //constructor
void callMe() { /* do something */ }
};
main()
{
A aa;
B bb;
//pseudo part:
generic_method_pointer_type p; //how to define the type of p?
p=HOWTO;//set pointer p to point to A::callMe. How to do?
p(aa); //A::callMe on instance aa gets called
p=HOWTO;//set pointer p to point to B::callMe. How to do?
p(bb); //B::callMe on instance bb gets called
}
이 모양이 가능합니까?
C++ 11에는 std :: function과 같은 새로운 트릭이 있음을 알고 있습니다. 나는 std :: function에 대해 몇 가지 실험을했고 작은 마이크로 컨트롤러에서 실행되는 실시간 앱에 너무 느리다. 그래서 최소의 오버 헤드를 유발하는 직접 하드 코딩 된 포인터를 선호합니다.
감사합니다.
제공 한 태그, 특히 member-function-pointer 아래의 게시물을 읽었습니까? –
그물 전체를 검색하는 데 두 시간 걸렸습니다. 당신이 대답에 대한 링크를 알고 있다면, 나는 그것을 고맙게 생각할 것입니다. – TeroK
'p = & A :: callMe;를 설정하고'p (bb);'를하면 어떻게 될 것으로 예상됩니까? – aschepler