我正在使用Luabind将LUA集成到我的一个项目中,以下事情让我感到奇怪(我是一名自学初学者)
template <class C, class D, class GetPolicies, class SetPolicies>
class_& def_readwrite(
const char* name
, D C::*mem_ptr
, GetPolicies const& get_policies
, SetPolicies const& set_policies
)
这个函数接受一个字符串和一个指向成员字段的指针,我明白了,令我困惑的是这里的顺序。
D C::*mem_ptr
我期待D :: C *,因为“&amp; foo :: bar”变成“foo bar :: *”......对我来说看起来很奇怪。 这背后的逻辑是什么?
答案 0 :(得分:1)
如果您将D
和C
替换为实际类型,则有意义:
struct Test{
int member;
};
typedef int Test::*memptr;
// ^^^ ^^^^
// D C
memptr p = &X::member;