c++ - 如何创建指向模板成员函数的函数指针?

标签 c++ c++11 visual-c++

我有两个模板类如下:

template<class T>
class pub {
public:
    void fun(T a, T b)
    {
       //do something with a & b
    }
}

template<class T>
class sub
{
private:
    std::set<funPtr> funPtr;
public:

    void fun2( funPtr f)
    {
        funPtr.insert(funPtr);
    }

};

我需要获取指向成员函数 fun 的函数指针。

问题是这两个类都是模板类,所以我不知道该怎么做。

我如何在 C++ 中解决这个问题?

最佳答案

template<typename T>
using funPtr = void (pub<T>::*)(T, T);

用法:

std::set<funPtr<T>> funPtrs;

或者简单地(在 sub 中,其中模板参数 T 可见):

using funPtr = void (pub<T>::*)(T, T);

std::set<funPtr> funPtrs;

关于c++ - 如何创建指向模板成员函数的函数指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37281673/

相关文章:

c++ - std::views::keys 是否保证能与任何对/元组类型正常工作?

c++ - 模板类中的可选代码

c++ - 静态库中带有 std::cout 的 MSVC 2010 链接器错误 2005

c++ - Visual C++ 2012 中的编译器错误? (乱七八糟的跳转地址)

visual-c++ - 获取蓝牙配对设备

c++ - 模板编程 : specialization and enable_if

c++ - boost async_read 不使用 ssl 读取所有数据

c# - 为什么 C# 中的 Dispose 模式不像 C++ 中的 RAII 那样工作

c++ - Gtest 新关键字

c++ - PPL容器性能