نقل قول نوشته شده توسط 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;
}