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
相关产品推荐
相关产品推荐

