نوشته شده توسط
md3848
سلام - من دو تا کلاس دارم، میخوام آدرس یک تابع رو از کلاس1 به کلاس2 ارسال کنه ( این ارسال و دریافت آدرس توابع، تو تابع init دو کلاس فوق انجام میشه)، وقتی تابعی عضو کلاس1 نیست، به راحتی میتونم آدرسشو ارسال کنم ( یعنی فقط تو فایل class1.cpp تعریف شده و تو class.h تعریف نشده ) ولی اگه عضو کلاس باشه نمیتونم و حتما باید static تعریف کنم اون تابع رو تا مشکل حل بشه - ممنون میشم راهنمایی کنید.
#include <iostream>
#include <memory>
using namespace std;
class A {
public:
A(){}
~A(){}
void func(){
cout << "invoke function pointer!" << endl;
}
};
template<class T>
class Base{
public:
Base() : f(T::func){
}
~Base(){}
inline void invoke(){
((*fp).*f)();
}
private:
decltype(T::func) f ;
unique_ptr<T> fp ;
};
int main()
{
Base<A> base;
base.invoke();
return 0;
}