class tmp { void tmp1(); void tmp1(int); };
함수포인터 변수 두개를 선언하고 위 클래스의 멤버함수 tmp::tmp1() 과 tmp::tmp1(int) 각각 대입하고 싶은데 이런경우 어떻게 해야 하는지 아시는분 계신가요?
C++ 멤버 함수는 일반 함수 포인터로 가리킬 수 없고 그 클래스 전용 "멤버 함수 포인터"를 써야 합니다.
구글에서 "pointer to member function"으로 찾아보세요.
http://en.cppreference.com/w/cpp/language/pointer (밑에서 두번째쯤에 member function pointer가 나옵니다.)
이름이 같은 멤버 함수에 포인터를 어떻게 대입시키느냐는 질문이였습니다
http://en.cppreference.com/w/cpp/language/overloaded_address 에 따르면, 그냥 하면 알아서 맞는 함수를 찾아주는 것 같습니다.
#include <stdio.h> class C { public: void f() { printf("void fn\n"); } void f(int d) { printf("int fn(%d)\n", d); } }; int main() { void (C::*ptr1)() = &C::f; void (C::*ptr2)(int) = &C::f; C c; (c.*ptr1)(); (c.*ptr2)(5); return 0; } 결과: void fn int fn(5)
고맙습니다 해결되었습니다
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
...
C++ 멤버 함수는 일반 함수 포인터로 가리킬 수 없고 그 클래스 전용 "멤버 함수 포인터"를 써야 합니다.
구글에서 "pointer to member function"으로 찾아보세요.
http://en.cppreference.com/w/cpp/language/pointer (밑에서 두번째쯤에 member function pointer가 나옵니다.)
이름이 같은 멤버 함수에 포인터를 어떻게
이름이 같은 멤버 함수에 포인터를 어떻게 대입시키느냐는 질문이였습니다
...
http://en.cppreference.com/w/cpp/language/overloaded_address 에 따르면, 그냥 하면 알아서 맞는 함수를 찾아주는 것 같습니다.
고맙습니다 해결되었습니다
고맙습니다
해결되었습니다
댓글 달기