语法在C 11中获取功能指针

Syntax to get function pointers in C++11

本文关键字:获取 功能 指针 语法      更新时间:2023-10-16

我正在尝试了解功能指针,并且我有以下测试代码:

#include <iostream>
using namespace std;
class Test {
public:
    void test_func() {
        cout << "Test func called.";
    }
};
void outer_test_func(Test &t, void (Test::*func)()) {
    (t.*func)();
}
int main(int argc, char *argv[]) {
    auto t = Test();
    outer_test_func(t, &Test::test_func);
}

这有效。但是据我了解Test::test_func&Test::test_func都导致了指针。那么,为什么我不能使用前者而不是后者呢?如果我尝试了G 抱怨。

,但据我了解test :: test_func and&amp; test :: test_func都导致指示。

Test::test_func不是创建指向成员函数指针的有效语法,也不是指向数据成员的指针。它从来都不是有效的C 语法。

来自cppreference(重点是我的),

可以使用Expression &amp; c :: M恰好初始化为C类的非静态成员对象M的指针。(c :: m)或在C内部的成员函数中的表达方式不会形成成员的指示。