关于成员变量偏移量的模板语法问题

发布于 2024-10-30 08:48:02 字数 531 浏览 0 评论 0 原文

我正在使用 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 *,因为“&foo::bar”变成“foo bar:: *”......对我来说看起来很奇怪。 这背后的逻辑是什么?

I'm using Luabind to integrate LUA into one of my projects, and the following thing struck me as odd (I'm a self taught beginner)

  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
        )

this function takes a string and a pointer to a member field, I get that, what confuses me is the order here.

D C::*mem_ptr

I expected D::C *, since "&foo::bar" into "foo bar:: *" ...looks very odd to me.
What is the logic behind this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

昵称有卵用 2024-11-06 08:48:02

如果将 DC 替换为实际类型,则有意义:

struct Test{
  int member;
};

typedef int Test::*memptr;
//      ^^^ ^^^^
//       D   C
memptr p = &X::member;

if you substitute D and C with actual types, it makes sense:

struct Test{
  int member;
};

typedef int Test::*memptr;
//      ^^^ ^^^^
//       D   C
memptr p = &X::member;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文