如何修复“一元”的无效类型参数?

时间:2011-10-13 02:03:59

标签: c++

我一直在遇到这个编译错误:

  

'一元'的无效类型参数

我对“一元”是什么进行了一些研究并得到了+,-.&之类的运算符,所以我的猜测是我在某个地方做了一个错误的运算符。我只包括有错误的代码部分,因为整个代码大约有2000行。此外,代码中还有其他错误,但它们是相同的,所以我假设如果我能够理解这个错误,我应该能够找出它们。

static int cmp_bk( const void *ap, const void *bp)
{
    int a; 
    int b;
    dynamic_cast<const struct bk>(*a)=ap;
    dynamic_cast<const struct bk>(*b)=bp;

    if (a->hash < b->hash) return -1;
    if (a->hash > b->hash) return 1;
    return (int)a->bk - (int)b->bk;
}

我得到的确切错误是:

  

'unary *'的无效类型参数

并且它设置为两行

dynamic_cast<const struct bk>(*a)=ap;
dynamic_cast<const struct bk>(*b)=bp;

2 个答案:

答案 0 :(得分:2)

没有适用于*的一元int运算符,因此*a没有意义。

我相信你所追求的是指向bk的指针,但是:

bk * pa;
bk * pb;
pa = dynamic_cast<bk*>(ap);
pb = dynamic_cast<bk*>(bp);

这只是一个疯狂的猜测,因为我不知道你的bk类是如何定义的。目前尚不清楚你真的想要一个动态的演员阵容。可能是重新解释是你真正追求的。

但是,我无法理解你想要回归的东西,所以如果你解释一下,我可能会说更多。

答案 1 :(得分:1)

abint s,*a应该对整数执行什么操作?你的演员阵容也很奇怪,我假设你想reinterpret_cast指向bk