You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在类对象内部正确使用成员指针(合法语法)

成员指针访问类成员的正确语法

要通过成员指针访问类的成员,你需要将对象实例和成员指针结合起来,在类的成员函数里直接用this->*ptr或者(*this).*ptr就能拿到对应成员的值,这是C++标准规定的合法语法。

修改后的完整代码如下:

class foo {
public:
    size_t x{ 33 };
    size_t y{ 77 };
    size_t z{ 99 };
    size_t get_by_ptr(size_t foo::*ptr) {
        // 使用this指针结合成员指针访问对应成员
        return this->*ptr;
        // 也可以写成 return (*this).*ptr; 两种写法等价
    }
};

int main() {
    foo bar;
    size_t foo::*ptr{ &foo::y };
    size_t z{ bar.get_by_ptr(ptr) }; // z的值会是77
}

补充说明

  • 成员指针size_t foo::*ptr存储的是成员相对于类对象基地址的偏移量,必须绑定到具体的对象实例(这里就是this指向的当前对象)才能完成成员访问。
  • ->*和.*是C++专门为成员指针设计的访问运算符,前者用于对象指针,后者用于对象实例。

内容的提问来源于stack exchange,提问作者user1857087

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 22:05:20