指向 const 成员函数 typedef 的指针
我知道可以像这样分开创建一个指向成员函数的指针
struct K { void func() {} };
typedef void FuncType();
typedef FuncType K::* MemFuncType;
MemFuncType pF = &K::func;
是否有类似的方法来构造一个指向 const 函数的指针?我尝试在不同的地方添加 const 但没有成功。我已经玩过 gcc 一些,如果你对类似的东西进行模板推导,
template <typename Sig, typename Klass>
void deduce(Sig Klass::*);
它将显示 Sig with 作为函数签名,并在末尾添加 const。如果在代码中执行此操作,它会抱怨您不能在函数类型上使用限定符。看来这应该是可能的,因为推论有效。
I know it's possible to separate to create a pointer to member function like this
struct K { void func() {} };
typedef void FuncType();
typedef FuncType K::* MemFuncType;
MemFuncType pF = &K::func;
Is there similar way to construct a pointer to a const function? I've tried adding const in various places with no success. I've played around with gcc some and if you do template deduction on something like
template <typename Sig, typename Klass>
void deduce(Sig Klass::*);
It will show Sig with as a function signature with const just tacked on the end. If to do this in code it will complain that you can't have qualifiers on a function type. Seems like it should be possible somehow because the deduction works.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您想要这样:
如果您想仍然将
MemFuncType
基于FuncType
,则需要更改FuncType
:You want this:
If you want to still base
MemFuncType
onFuncType
, you need to changeFuncType
:稍微改进一下,展示了如何在没有 typedef 的情况下完成此操作。
在如下推导的上下文中,您不能使用 typedef。
应用于某个带有 const getter 的类:
A slight refinement showing how to do it without a typedef.
In a deduced context like the following, you can't use a typedef.
applied to some class with a const getter:
另一种更直接的方法(避免使用
using
和typedef
)是这样的:mpc
是一个指向Object< 的 const 方法指针。 /代码>。
Another more direct way to do it (avoiding
using
andtypedef
s) is this:mpc
is a const method pointer toObject
.