멤버 함수내에서 다른 멤버함수를 포인터를 이용해서 호출하려합
글쓴이: inootis / 작성시간: 목, 2003/05/15 - 7:33오후
멤버 함수내에서 다른 멤버함수를 포인터를 이용해서 호출하려합니다.
인터넷..을뒤져;; 찾은것 같은데...에러를 발생하네요;
잘못된코드일까요?.....잘못된 코드면 어떻게 해야 원하는 결과를 얻을수 있을까요?
class test { public : void funcs() { std::cout << "called"; } void call() { void (test::*pFunc)(); pFunc=test::funcs; (this->*pFunc)(); } }; test a; a.call();
Forums:
클래스 안에서는 static으로 선언된 함수가 아닌이상은함수포인터
클래스 안에서는 static으로 선언된 함수가 아닌이상은
함수포인터를 쓸 수 없는 걸로 압니다. 그럼 고운 하루 ^^;
=========================
CharSyam ^^ --- 고운 하루
=========================
[quote="charsyam"]클래스 안에서는 static으로 선언된
웁; 정녕 없는건가요 ㅜㅠ;
...
virtual이 아닌 이상 static이 아닌 함수라도 함수 포인터로 쓸 수 있는 것으로 알고 있습니다.
원래 코드에서
pFunc=test::funcs;
->
pFunc=&test::funcs;
이렇게 바꾸니까 에러 나지 않던데요? (gcc 2.95.2)
Re: ...
컴파일러가 그렇게 하라는 말이었군요;; 감사합니다.
혹시..클래스와 관련해서...함수포인터에 관해 설명해 있는 싸이트...알고계시나요?
함수 포인터
c++을 제대로 활용하고 싶으시다면 function pointer 보다는
functional object (일명 functor)에 대해 공부해보세요
이걸 잘 알아두면 STL의 algorithm을 쓸때 유용하게 사용할 수 있습니다.
bjarne씨가 지으신 The C++ Programming Language 등의 책에 보면 잘 나와있습니다.
댓글 달기