[engnrljh] == C++ Ŭ·¡½º¿¡¼­ ÇÔ¼ö Æ÷ÀÎÅÍ »ç¿ëÇϱâ == * Á¦¾àÁ¶°Ç 1. Ŭ·¡½º ¸â¹öÀÎ ÇÔ¼ö Æ÷ÀÎÅÍ¿¡ ÇØ´ç Ŭ·¡½ºÀÇ ¸â¹öÇÔ¼öÀÇ ÁÖ¼Ò¸¦ ÇÒ´çÇÏ´Â °ÍÀº °¡´ÉÇÏÁö¸¸ È£ÃâÀº ºÒ°¡´É. 1. Ŭ·¡½º ¿ÜºÎ¿¡¼­ ÇØ´ç Ŭ·¡½º¿¡ ´ëÇÑ ÇÔ¼ö Æ÷ÀÎÅ͸¦ ¼±¾ðÇÏ°í, Ŭ·¡½º ¸â¹öÇÔ¼öÀÇ ÁÖ¼Ò¸¦ ÇÒ´ç ¹× È£Ãâ °¡´É. 1. Ŭ·¡½º ¸â¹ö º¯¼öÀÎ ÇÔ¼ö Æ÷ÀÎÅÍ¿¡ static ¸â¹öÇÔ¼öÀÇ ÁÖ¼Ò¸¦ ÇÒ´ç ¹× È£Ãâ °¡´É. [[TableOfContents]] === Á¦¾àÁ¶°Ç1 === ¿¹ {{{#!vim cpp class A { public: // Ŭ·¡½º A¿¡ ´ëÇÑ Æã¼Ç Æ÷ÀÎÅÍ void (A::*FuncPtr)(void); void Func1(void) { cout<<"Func1"<FuncPtr = this-£¾Func1; else this->FuncPtr = this-£¾Func2; } void RunFuncPointer() { this->FuncPtr(); // £¼--- ÄÄÆÄÀÏ ¿¡·¯ ¹ß»ý } }; }}} === Á¦¾àÁ¶°Ç2 === ¿¹ {{{#!vim cpp class A { public: void Func1(void) { cout<<"Func1"<FuncPtr = this->Func1; else this->FuncPtr = this->Func2; } void RunFuncPointer() { this->FuncPtr(); } }; int main() { A obj; int num; cout<<"select function(1, 2) : "; cin>>num; obj.SetFuncPointer(num); obj.RunFuncPointer(); return 0; } }}} [engnrljh]