【问题标题】:Expression must have (Pointer-to-) function type while using structs使用结构时,表达式必须具有 (Pointer-to-) 函数类型
【发布时间】:2012-09-01 23:14:01
【问题描述】:

所以基本上我正在做的是将一个结构数组从一个函数传递到另一个函数。它适用于显示功能,但不适用于最大功能:/我到底做错了什么?

void show( const ABC & x ){
    cout<<"{"<<x.n<<",'"<<x.c<<"',{"<<x.a[0]<<","<<x.a[1]<<","<<x.a[2]<<"}}";
}

void show( const ABC arr[], unsigned elements ){
    for(unsigned i=0; i<elements; i++)
        show(arr[i]);
}

以下不起作用

double max( const ABC & x ){
    double max=x.a[2];
    if(x.a[1]>max)
        max=x.a[1];
    if(x.a[0]>max)
        max=x.a[0];
    return max;
}

double max( const ABC arr[], unsigned elements ){
    double max=arr[2].a[3];
    for(unsigned i=0; i<elements; i++)
        if(max<max(arr[i])){
            max=max(arr[i]);
        }
    return max;
}

【问题讨论】:

  • 以后考虑让编译器明确给出的错误。交叉引用错误指向的行也非常有帮助。它有助于弄清楚发生了什么。
  • 您可能还想将const ABC arr[] 替换为const ABC* arr。这两个语句可能是等效的,您不必修改任何引用“arr”的内容,但如果它给您带来某种访问错误,那么值得一试。

标签: c++ arrays function pointers struct


【解决方案1】:

将您的 double 变量重命名为 max 以外的其他名称。事实上,它隐藏了共享相同名称的函数,因此调用表达式无效(您试图将参数传递给double)。

【讨论】:

  • 哦,哇,谢谢……那是我的失败。不知道我是怎么错过的哈哈
猜你喜欢
  • 2015-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 2018-03-27
相关资源
最近更新 更多