Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Function Pointer ไปยัง Member Function ใน C++

ใน C++ function pointers เมื่อจัดการกับ member functions ของคลาสหรือ struct จะถูกเรียกใช้ผ่าน object pointer หรือ this call เราสามารถเรียกสมาชิกของคลาสนั้น (หรือคลาสลูก) เท่านั้นโดยใช้ pointer ของประเภทนั้น เพราะเป็น type-safe

ตัวอย่างโค้ด

#include <iostream>
using namespace std;

class AB {
public:
    int sub(int a, int b) {
        return a - b;
    }
    int div(int a, int b) {
        return a / b;
    }
};

// ใช้ function pointer
int res1(int m, int n, AB* obj, int (AB::*fp)(int,int)) {
    return (obj->*fp)(m, n);
}

int res2(int m, int n, AB* obj, int (AB::*fp2)(int,int)) {
    return (obj->*fp2)(m, n);
}

int main() {
    AB ob;
    cout << "Subtraction is = " << res1(8, 5, &ob, &AB::sub) << endl;
    cout << "Division is = " << res2(4, 2, &ob, &AB::div) << endl;
    return 0;
}

ผลลัพธ์

Subtraction is = 3
Division is = 2