语法在C 11中获取功能指针
Syntax to get function pointers in C++11
我正在尝试了解功能指针,并且我有以下测试代码:
#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内部的成员函数中的表达方式不会形成成员的指示。
相关文章:
- 在 Linux 中使用 ioctl() 获取隐藏功能报告时,零字节消失
- 如何使用CAPL的诊断功能获取CAN传输的数据(256字节)?
- 如何使用 C/C++ 和 system() 系统调用以外的其他方法在 Linux 中获取文件功能?
- 如何从主.cpp中的cpp文件中获取功能结果?
- C 从模板中获取功能名称
- C++ QT:获取指向信号的指针和插槽功能的函数
- (如何)获取有关某个 C++Year 的已弃用/不推荐的功能/构造的编译器警告
- 从Baseclass获取其他功能
- 使用clang获取功能定义
- 获取类成员功能的地址并从指针调用
- 语法在C 11中获取功能指针
- 如何在不引起实例化的情况下获取功能模板的签名
- 在CPP中获取功能指针类型酶的错误
- 为了支持移动语义,应通过unique_ptr,值或rvalue获取功能参数
- 在模板中获取功能返回类型
- 在不发送任何内容的情况下获取功能的返回
- 在编译时间(或运行时)获取C 功能的名称
- 在C 中获取功能的运行时间
- 如何在代码中获取功能使用的名称
- 使用模板获取功能指针进行完美转发