错误:表达式不能用作函数。如何删除?

时间:2015-01-08 05:44:07

标签: c++ compare qsort

我正在使用这个结构

    struct box
    {
        int h,w,d;
    };
    int compare (const void *a, const void * b)
    {
        return  ((*(box *)b).d * (*(box *)b).w) – ((*(box *)a).d * (*(box *)a).w); // error is showing in this line
    }
    box rot[3*n];
    qsort (rot, n, sizeof(rot[0]), compare);

我正在尝试qsort 但显示错误表达式不能用作

中的函数

1 个答案:

答案 0 :(得分:0)

返回行中的减号运算符存在问题,应该是-而不是

定义数组rot时应该包含 struct box 类型的元素而不是box的另一个问题,因为结构块中的typedef

因此,除了为结构box添加标记box之外,您还有两种可能性:

typedef struct box
{
    int h,w,d;
} box;

或者只是在数组struct的定义中添加单词rot,并在比较函数中添加(在每个box单词之前):

int compare (const void *a, const void * b)
{
    return  ((*(struct box *)b).d * (*(struct box *)b).w) - ((*(struct box *)a).d * (*(struct box *)a).w);
}

struct box rot[3*n];