[완료]클래스 멤버 함수에 대한 함수 포인터를 만들고 호출할 때 컴파일 에러.
글쓴이: zaemin / 작성시간: 월, 2007/07/09 - 10:00오전
안녕하세요.
멤버 함수에 대한 함수 포인터를 이용해서 함수를 호출하는 코드인데 컴파일이 되지 않습니다. 구글 comp.lang.c++에 올려보았으나 해결이 되는 답을 얻을 수 없어서 이곳에도 이렇게 여쭙습니다.
참고로 아래에서 pfnOperate가 static 변수로 선언되었기 때문에 문제가 되지는 않습니다. 이를 인스턴스 변수로 선언해도 마찬가지로 컴파일 에러가 발생합니다.
혹시 해결책을 아시는 분 답변을 부탁 드립니다.
class Test { public : typedef int (Test::*pfnOperate)(int x, int y); const static pfnOperate m_arpOperate[2]; int Add(int x, int y); int Subtract(int x, int y); int Foo(int which, int x, int y); }; const Test::pfnOperate Test::m_arpOperate[2] = {Test::Add, Test::Subtract}; int Test::Add(int x, int y){ return x + y; } int Test::Subtract(int x, int y) { return x - y; } int Test::Foo(int which, int x, int y) { <span><span> return (Test::m_arpOperate[which])(x, y); // Fail to compile.</span></span> } int main(int argc, char* argv[]) { Test t; return t.Foo(0, 10, 5); }
Forums:
컴파일 에러는 다음과 같습니다.
error C2064: term does not evaluate to a function
const Test::pfnOperate
정말 감사합니다.
구글에 올려도 답을 찾을 수 없어서 그냥 if 문써야 하는 것인가 고민하고 있었는데... 정말 감사합니다.
댓글 달기