참조 : (가) 원본 또는 업데이트 [33.11] Can I convert a pointer-to-function to a void*?p가 함수 포인터 인 경우 p (..) 또는 (* p) (..)를 사용해야합니까?
#include "stdafx.h"
#include <iostream>
int f(char x, int y) { return x; }
int g(char x, int y) { return y; }
typedef int(*FunctPtr)(char,int);
int callit(FunctPtr p, char x, int y) // original
{
return p(x, y);
}
int callitB(FunctPtr p, char x, int y) // updated
{
return (*p)(x, y);
}
int _tmain(int argc, _TCHAR* argv[])
{
FunctPtr p = g; // original
std::cout << p('c', 'a') << std::endl;
FunctPtr pB = &g; // updated
std::cout << (*pB)('c', 'a') << std::endl;
return 0;
}
질문> 방법, 권장되는 방법은? 두 방법 모두 VS2010으로 테스트했으며 각 결과가 올바른 결과를 인쇄합니다.
void baz()
{
FredMemFn p = &Fred::f; ← declare a member-function pointer
...
}
포인터 - 회원 기능은 ** 전혀 다른 주제 **입니다. 나는 [내 대답] (http://stackoverflow.com/q/8198062/596781)의 끝에 간단히 언급한다. –
분명히'(******************** p)()'를 사용해야합니다! –