模板化函数指针说明
Templated Function Pointer Explanation
我对这里发生的事情感到困惑,我希望你们中的一位大师可以帮助我理解。我已经将这门课提炼成似乎相关的方法,希望我没有错过任何东西。
template < int* ( foo::*member_function )( void ) >
class bar
{
public:
int myFunc( foo* myFoo )
{
int* result = ( myFoo->*member_function )();
return *result;
}
};
我不明白这怎么知道member_function是什么,没有变量,但它被调用,有人在这里帮助我?
实际上可以作为模板参数传递的数据类型有限;也就是说,并非所有模板参数都需要是类型:
[C++11: 14.1/1]:
非类型模板参数应具有以下类型之一(可选符合 cv 条件):
- 整数或枚举类型,
指向- 对象的指针或指向函数的指针,
对对象的左值引用- 或对函数的左值引用,
- 指向成员的指针,
std::nullptr_t
.
您已经演示了一个将指向成员的指针作为模板参数传递的示例。
member_function
是模板参数的名称:
template < int* ( foo::*member_function )( void ) >
也就是说,模板参数 member_function
是 foo
的成员函数,它不带参数并返回 int*
。
如果使用类似 bar<&foo::a_member_function> b;
、 member_function
模板参数创建类型为 bar
的对象,则 模板参数将设置为成员函数 foo::a_member_function
。然后,当你调用myFunc
,给它一个指向foo
的指针时,它将在该foo
上调用该成员函数。
相关文章:
- 当使用通配符和null指针调用函数时,对输出的说明
- 关于C++中具有多重继承"this"指针的说明
- 指针数组说明
- 有关通过引用传递指针的说明
- 说明通过指针访问非静态类成员函数
- 了解 ARM 程序集说明和 C/C++ 指针
- 该指针操纵功能的说明
- 请求对数组中指针行为的说明
- 模板化函数指针说明
- C /参考操作员和指针中的插座连接()函数说明
- 函数指针说明
- C++指针分配说明
- C++03 12.4/12对通过指针显式调用基类析构函数有何说明
- 函数指针的说明
- 有关 c++ 中指针的说明
- 指针分配说明
- 关于指向非静态类成员的指针的说明
- 对指向函数转换的指针的说明
- 无法'this'指针从'const Line'转换为'Line &'说明?
- 关于智能指针运算符*和运算符>重载的说明