Dev-C++报C++语法错误:inversi(k)处需构造/析构/类型转换
问题解析:Dev-C++中
inversi(k)的语法错误 嘿,我来帮你彻底搞懂这个错误的根源:
核心错误:非法的语法写法
你代码最开头的两行:
inversi(k)= 1.0 / k; //k取值范围为1到5 quadrati (k)= k*k; //k取值范围为1到5
这是完全不符合C语法规则的写法。C里没有“给函数名加参数后直接赋值”这种操作——这既不是函数声明,也不是函数调用,更不是合法的表达式。看起来你可能是想给这两个函数做个功能说明,但用了错误的代码形式,编译器看到inversi(k)这种写法时,完全无法理解你的意图,它会默认你试图定义某种类相关的实体(比如构造函数、析构函数)或者类型转换操作,所以才抛出了ERROR c++ expected constructor, destructor, or type conversion before '(' token的错误提示。
额外需要修复的小问题
除了上面的核心错误,你的代码还有一处语法小问题:
在funzsomma函数的循环里,你写了s= s+f(i)...,这里的...是多余的,而且会导致语法错误,应该改成完整的语句:
for (i=1; i<=n; i++) { //求和 s = s + f(i); }
修正后的完整代码示例
#include <iostream> using namespace std; // inversi(k) 返回k的倒数,k取值范围为1到5 double inversi(int k){ return 1.0/k; } // quadrati(k) 返回k的平方,k取值范围为1到5 double quadrati (int k){ return (double)k*k; } double funzsomma(int n,double (*f) (int k)){ double s=0; int i; for (i=1; i<=n; i++) { //求和 s = s + f(i); } return s; // 别忘了返回求和结果 } // 可以加个main函数测试 int main() { cout << "倒数求和(1-5): " << funzsomma(5, inversi) << endl; cout << "平方求和(1-5): " << funzsomma(5, quadrati) << endl; return 0; }
内容的提问来源于stack exchange,提问作者Matteo Toma
相关产品推荐
相关产品推荐

