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

C++中‘invalid use of non-static data member’错误原因及解决方法

错误原因与解决办法

错误原因

  • 你在友元函数operator+里直接写left_和right_,但这两个是var类的非静态成员变量,这类变量属于具体的对象实例,而非类本身。友元函数虽能访问类的私有成员,但必须明确指定操作的对象——你现在未绑定具体对象,编译器无法识别要操作哪个var实例的成员,因此报错。(注:你提供的错误信息提到r_,推测是代码编写过程中的笔误,但核心问题一致:访问非静态成员时未指定所属对象)

解决办法

  • 你实际要给新创建的result对象的left_和right_赋值,因此必须加上对象前缀result.,修改后的operator+函数如下:
friend var operator+(const var& l, const var& r) {
    var result(l.value_ + r.value_);
    result.left_ = std::make_shared<var>(l.value_);
    result.right_ = std::make_shared<var>(r.value_);
    return result;
}

这样编译器就能明确你要操作的是result这个var实例的成员变量,代码可正常编译。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:15:55