我一直在遇到这个编译错误:
'一元'的无效类型参数
我对“一元”是什么进行了一些研究并得到了+,-.&
之类的运算符,所以我的猜测是我在某个地方做了一个错误的运算符。我只包括有错误的代码部分,因为整个代码大约有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;
答案 0 :(得分:2)
没有适用于*
的一元int
运算符,因此*a
没有意义。
我相信你所追求的是指向bk
的指针,但是:
bk * pa;
bk * pb;
pa = dynamic_cast<bk*>(ap);
pb = dynamic_cast<bk*>(bp);
这只是一个疯狂的猜测,因为我不知道你的bk
类是如何定义的。目前尚不清楚你真的想要一个动态的演员阵容。可能是重新解释是你真正追求的。
答案 1 :(得分:1)
a
和b
是int
s,*a
应该对整数执行什么操作?你的演员阵容也很奇怪,我假设你想reinterpret_cast
指向bk
。