C++模板函数指针

标签 c++ templates

我遇到了一个c++模板函数poniter问题,请大家帮忙。非常感谢。

class AAA {
  public:
    template<typename K>
    void dooo(K str) {
      std::cout << str << std::endl;
    }
};

template<typename Class, typename ret, typename K>
using Func = ret (Class::*) (K);

int main() {
  Func<AAA, void, int> myFunc = &AAA::dooo;

  myFunc(3);

  return 0;
}

编译:clang++ -std=c++11 -o c c.cc

错误:

error: called object type 'Func<AAA, void, int>' (aka 'void (AAA::*)(int)') is not a function or function pointer

  myFunc(3);

  ~~~~~~^

1 error generated.

最佳答案

由于dooo() 不是AAAstatic 成员函数,因此您需要一个AAA 的实例来在以下位置调用 myFunc:

AAA a;
(a.*myFunc)(3);

关于C++模板函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51392509/

相关文章:

模板的 C++ 链接错误,仅使用头文件,为什么?

c++ - 如何反转可变参数模板函数的参数顺序?

c++ - 如何在进行分页时设置 Qt::Vertical headerData of QSqlQueryModel 增加数字

c++ - shared_ptr 和 shared_array 为引用计数器分配内存

c++ - 测量可执行文件的数据和指令缓存的大小

c++ - 模板和 STL

c++ - 如何创建容器模板(例如 std::map)?

c++ - 我应该使用 switch 语句从变量创建 C++ 模板化对象吗?

c++ - 如何使用可选的格式化消息实现符合标准的断言宏?

c++ - 画线例程