关于模板参数使用的代码问题

#include <iostream>
using namespace std;

class Tv
{
public:
    static void onBtnClicked(bool b)
    {
        if(b==true)
            cout<<"on"<<endl;
        else
            cout<<"off"<<endl;
    }
    Tv(int a,int b):a(a),b(b){}
    const int getA(void){return a;}
private:
    int a;
    int b;
};

class lamp
{
   public:
    static void onBtnClicked(bool b)
    {
        if(b==true)
            cout<<"on"<<endl;
        else
            cout<<"off"<<endl;
    }
    lamp(int a,int b):a(a),b(b){}
    const int getA(void){return a;}
private:
    int a;
    int b;
};

template <typename Tobject, typename Tpara>
class Button
{
    typedef void (Tobject::*pFuction)(Tpara);
public:
    Button(Tobject* obj, pFuction pf)
    {
        m_obj=obj;
        m_pf=pf;
    }
    void click(Tpara b)
    {
        (m_obj->*m_pf)(b);
    }
private:
    Tobject* m_obj;
    pFuction m_pf;
};

int main()
{
    Tv a(20,40);
    Button<Tv,bool> btn(&a, &Tv::onBtnClicked);//无法初始化类
    btn.click(true);
    return 0;
}

类模板初始化错误,能指正下吗?

error:no known conversion for argument 2 from 'void (*)(bool)' to 'Button<Tv, bool>::pFuction' {aka 'void (Tv::*)(bool)'}

静态成员函数被编译器当做全局函数处理,非静态成员函数也做普通函数处理,只不过在参数列表中多加了一个this参数。因而,函数指针指向错误,参数不匹配

C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html