전달되는 메서드를 호출하고 값을 반환하는 함수가 들어있는 Foo라는 구조체가 있습니다. 잘 fooFunc전달 멤버 또는 비 멤버 함수 포인터를 매개 변수로 사용
Foo foo1;
foo1.fooFunc(10, &barFunc);
에 전달하지만 나는 또한 fooFunc이 멤버 함수를 허용 할 수 있습니다
내가 barFunc라는 방법을struct Foo
{
unsigned char fooFunc(unsigned char param, unsigned char(getValueMethod)(const unsigned char))
{
return getValueMethod(param);
}
};
...
static unsigned char barFunc(const unsigned char paramA)
{
return paramA * 2;
}
..., bazFunc와 같은 ...
struct Baz
{
unsigned char bazFunc(const unsigned char paramB)
{
return paramB * 3;
}
};
... 이런 식으로 호출 할 ...
Foo foo2;
Baz baz;
foo2.fooFunc(10, ?????);
...하지만 유효하지 않습니다.
매개 변수로 멤버 함수를 전달할 때 발견 한 모든 사항은 객체가 호출되기 전에 어떤 클래스가 생성되는지 알기 때문에 하나가 아닌 2 개의 함수를 만들어야한다는 것을 의미합니다.
하나의 fooFunc 메서드 만 필요하지만 비 멤버 및 멤버 함수를 지원하는 방법은 아직 없습니다.
C++ 11을 사용할 수 있습니까? –
아니, 할 수 없어 ..... – Beakie
당신은'boost :: bind' ('this' 포인터를 묶기 위해)와 템플릿 호출 가능을 원합니다. 기술적으로 두 개 이상의'fooFunc'--- method --- 멤버 함수가 있지만'fooFunc' 멤버 함수 템플릿은 하나뿐입니다! –