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

如何编写C++类函数,允许外部函数通过指针修改类成员?

解决方案

可以在cFoo类中新增一个成员函数,返回私有成员m_bar的地址,让外部函数能通过该地址直接修改m_bar的值。由于func2需要接收char**类型的参数,这个成员函数的返回类型正好匹配。

修改后的类代码

class cFoo
{
private:
    char *m_bar;
public:
    char *bar(void) {return m_bar;}
    void set_bar(char *newBar) {m_bar = newBar;}
    // 返回m_bar的指针,供外部函数修改
    char** get_bar_ptr() { return &m_bar; }
};

调用方式

cFoo fooInst;
func2(fooInst.get_bar_ptr()); // 此时可正常修改m_bar

原理说明

  • get_bar_ptr()返回的是m_bar的地址(类型为char**),完全适配func2的参数要求,外部函数通过解引用该地址就能直接修改类的私有成员。
  • 这种方案无需改动遗留的func2,也不会破坏现有代码结构,符合无损重构的需求。

重构过渡建议

如果后续需要逐步优化,可以在get_bar_ptr()内部添加日志、参数校验等逻辑,逐步替代直接暴露指针的方式,同时保持外部调用接口不变,实现平滑过渡:

char** get_bar_ptr() {
    // 可在此添加日志、校验等重构逻辑
    return &m_bar;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:27:10