類模板封裝(奇技淫巧)
阿新 • • 發佈:2018-12-02
//類模板封裝(奇技淫巧)
#include<iostream>
using namespace std;
class A
{
public:
A(int id):_id(id){}
~A() {}
void print() {
std::cout << "User[" << _id << "] login success..." << std::endl;
}
private:
A() {}
int _id;
};
template<class T>
class B
{
typedef void (T::*CallBack)();
public:
B(T& u,CallBack method):Object(&u),_method(method) {}
~B() {}
void p() {
//或許是因為模板類在編譯時才能確定型別
//所以函式指標必須要加上*
(Object->*_method)();//這一步重點
}
private:
T* Object;
CallBack _method;
};
int main() {
A a(666);
B<A> b(a,&A::print);
b.p();
A a1( 888);
B<A> b1(a1,&A::print);
b1.p();
cin.get();
return 0;
}