저는 C++을 배웠고 메서드에 대한 포인터와 관련하여 어려움을 겪고 있습니다. 다음과 같이 말합니다 :메서드 포인터 문제
class One {
public:
int Add (int a, int b) {return a+b;}
};
typedef int (One::*pAdd) (int, int);
class Other {
public:
int Next (pAdd funct, int c){ return funct (c, 1);}
};
int main(){
One one;
Other other;
other.Next(one.Add, 2);
return 0;
}
내 MinGW에서보고 한 바와 같이 여러 가지 문제가 있습니다. 첫째, 컴파일러가. * 또는 -> * 사용을 주장하면서 나는 funct를 올바르게 호출하지 않습니다. 이 요청을 통합하는 방법을 모르고 어떤 도움을 환영합니다. 이제는 C 스타일 포인터를 사용하거나 객체를 전달하고 Next에서 메서드를 호출하기 위해 메서드를 정적으로 만들어 문제를 해결할 수 있지만 메서드에 대한 포인터를 이해하고 싶습니다. 기본적으로, 나는 왜 one.Add가 받아 들일 수없는 입력인지에 대해 의아해합니다. 호출 방법은 모호하지 않게 정의되고 (.Add) 내 typedef를 준수합니다. 또한 typedef에서 클래스 (1)의 인스턴스를 제공하므로 메소드가 실행되는 컨텍스트를 제공합니다. 그러나 컴파일러 출력은 마치 구문을 놓치지 않은 것처럼 보입니다. 그러나 개념을 놓친 것처럼. 그렇다면 객체에 대한 메소드에 대한 포인터를 컨텍스트로 단일 인수로 전달하는 방법은 무엇입니까?
... 그들 모두 열고 잘못된 탭에 게시했다. 커뮤니티에 사과 드리며 질문을 어떻게 삭제합니까? –
@gxs가 마이그레이션됩니다. –
안녕 gxs, 귀하의 질문을 StackOverflow로 자동으로 이동할 수 있도록 중재자가 통보됩니다. 이것은 프로그래머이며 소프트웨어 개발에 대한 개념적 질문을위한 사이트입니다. 자세한 내용은 std :: bind/boost :: bind 및 lambda 제안에 대한 [FAQ] (http://programmers.stackexchange.com/faq) –