【问题标题】:Error: Expression must have (Pointer-to-) function type错误:表达式必须具有 (Pointer-to-) 函数类型
【发布时间】:2015-01-07 16:02:07
【问题描述】:

我正在编写一个函数,它可以输出所谓的斯特林数。我写的代码如下:

int SecondStirling(const int& k, const int&n){
    if(k<0||n<0) return 0;
    if(k==0 && n>0) return 0;
    if(k>0 && n==0) return 0;
    if(k>n) return 0;
    if(k==n) return 1;
    else return k(SecondStirling(k,n-1))+SecondStirling(k-1,n-1);
}

但是,我在最后一行收到错误:错误:表达式必须具有 (Pointer-to-) 函数类型,该错误专门针对 k。什么给了?

【问题讨论】:

  • k(SecondStirling(k,n-1)) 是什么意思?
  • 使用输入 (k,n-1) 运行函数,并将结果乘以 k。
  • 你的意思是k * SecondStirling(k,n-1)

标签: c++ function pointers types


【解决方案1】:

与数学不同,乘法运算符* 不能省略。改变

k(SecondStirling(k,n-1))

k * (SecondStirling(k,n-1))

【讨论】:

    【解决方案2】:

    通过写作

    k(SecondStirling(k,n-1))
    

    您正在尝试调用名为“k”或由“k”指向的函数,接受一个 int 类型的参数(由 SecondStirling 返回)。 但是“k”是一个 int 变量,因此是错误的。 正如已经指出的,正确的语法是

    k * (SecondStirling(k,n-1))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多