如何使用 C++11 语法对方法指针进行类型定义?
How do I typedef a method pointer with the C++11 using syntax?
我想写这个
class A {
...
};
typedef void (A::*MethodPtr)();
使用 using
。我该怎么做?
使用和不使用 type_traits
。
的答案将不胜感激
(常规函数的答案可以在这里找到:How do I typedef a function pointer with the C++11 using syntax?)
using MethodPtr = void (A::*)();
实际上非常类似于函数指针。
using MethodPtr = void (A::*)();
<type_traits>
中没有任何内容对此处有直接帮助(您可以从指向成员函数的指针转到函数,但不能反过来)。但是我们可以编写自己的成员版本 add_pointer
:
template <class C, class T>
using mem_ptr_t = T C::*;
因此创建一个指向 A
的指针,它是类型 void()
的函数只是:
using MethodPtr = mem_ptr_t<A, void()>;
这比简单的方法更冗长,但既然你问了!
我想写这个
class A {
...
};
typedef void (A::*MethodPtr)();
使用 using
。我该怎么做?
使用和不使用 type_traits
。
(常规函数的答案可以在这里找到:How do I typedef a function pointer with the C++11 using syntax?)
using MethodPtr = void (A::*)();
实际上非常类似于函数指针。
using MethodPtr = void (A::*)();
<type_traits>
中没有任何内容对此处有直接帮助(您可以从指向成员函数的指针转到函数,但不能反过来)。但是我们可以编写自己的成员版本 add_pointer
:
template <class C, class T>
using mem_ptr_t = T C::*;
因此创建一个指向 A
的指针,它是类型 void()
的函数只是:
using MethodPtr = mem_ptr_t<A, void()>;
这比简单的方法更冗长,但既然你问了!