我正在研究该实施is_class
Boost 中的模板,并遇到了一些我无法轻易破译的语法。
template <class U> static ::boost::type_traits::yes_type is_class_tester(void(U::*)(void));
template <class U> static ::boost::type_traits::no_type is_class_tester(...);
我该如何解读void(U::*)(void)
多于?我熟悉 C,所以它看起来有点类似于void(*)(void)
,但我不明白如何U::
修改指针。有人可以帮忙吗?
Thanks
*
表示一个指针,因为您可以通过写入来访问其内容*p
. U::*
表示指向类成员的指针U
。您可以通过编写来访问其内容u.*p
or pu->*p
(where u
是一个实例U
).
所以,在你的例子中,void (U::*)(void)
是一个指针致某成员U
这是一个不带参数且不返回值的函数。
Example:
class C { void foo() {} };
typedef void (C::*c_func_ptr)(void);
c_func_ptr myPointer = &C::foo;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)