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

C++代码调用getvolume函数出现‘无法解析重载函数的地址’错误求助

问题分析与解决方案

嘿,我一眼就找到你代码里的问题啦!

错误根源

你在main函数里调用getvolume方法时,写的是:

box1.getvolume;

这是函数调用的语法错误——C++里调用无参函数必须加上括号(),哪怕没有参数要传递。不带括号的getvolume会被编译器解析成函数的地址(函数指针),而不是执行这个函数,这就是你看到statement cannot resolve address of overloaded function错误的原因。

修正后的代码

只需要把函数调用的地方加上括号,同时可以优化一下输出格式让结果更清晰:

#include <iostream> 
using namespace std; 
class Box { 
public: 
    double length; 
    double breadth; 
    double height; 
    void getvolume(); 
    void setlength( double len) { length=len; } 
    void setbreadth( double bre) { breadth=bre; } 
    void setheight(double hei) { height=hei; } 
}; 
void Box::getvolume() { 
    double volume= length*breadth*height; 
    cout << volume << endl; // 加换行让输出更整洁
} 
int main() { 
    Box box1; 
    Box box2; 
    //box 1 dimensions 
    box1.setlength(12.0); 
    box1.setbreadth(14.7); 
    box1.setheight(19.5); 
    //box 2 dimensions 
    box2.setlength(3.4); 
    box2.setbreadth(2.2); 
    box2.setheight(23.4); 
    cout << "the volume of box 1 is: "; 
    box1.getvolume(); // 这里加上括号!
    // 也可以输出box2的体积
    cout << "the volume of box 2 is: "; 
    box2.getvolume();
    return 0; 
}

补充说明

你之前尝试的把函数移到类内部、修改返回类型、用作用域解析符这些操作,其实都不是问题的核心——这个错误完全是因为函数调用时缺少了必要的括号。记住:

  • 函数名本身是函数的地址(指针)
  • 只有加上(),才会触发函数的执行逻辑

这样修改后,代码就能正常运行,输出两个盒子的体积啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 17:17:43