【问题标题】:send a member function as an argument to a member of templated class将成员函数作为参数发送给模板类的成员
【发布时间】:2021-09-04 03:20:09
【问题描述】:

我有一个模板基础类:我想将一个成员函数作为参数发送给另一个函数,我该怎么做?

template <class T>
class GenericButton
{
public:
    GenericButton(const T& t) :m_t(T) {};
    auto& getT() {
        return m_t;
    }
private:
    T& m_t;
};

class Check
{
private:
    bool m_generic;
    void changeType()
    {
        m_generic = !m_generic;
    };
    GenericButton<decltype(changeType)> m_button = GenericButton<decltype(//changetype());  
// maybe lambda
};

int main(){
    auto check = Check();
    auto function = check.m_button.getT();
    function();
}

请问我怎样才能将函数作为模板成员发送? 请指教, 提前致谢

【问题讨论】:

    标签: c++ function pointers templates lambda


    【解决方案1】:

    大概是这样的:

    using Callback_t = std::function<void()>;
    GenericButton<Callback_t> m_button{ [this](){ changeType(); } };
    

    Demo。我冒昧地将GenericButton 更改为按值保存回调;以引用的方式持有它是在自找麻烦。

    【讨论】:

      猜你喜欢
      • 2015-11-08
      • 2023-04-02
      • 2011-07-06
      • 1970-01-01
      • 2016-06-25
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 2020-12-31
      相关资源
      最近更新 更多