C++ “我该如何解决?”;无效的类型参数';一元';?

C++ “我该如何解决?”;无效的类型参数';一元';?,c++,C++,我遇到了以下编译器错误: “一元”的类型参数无效 我做了一些关于“一元数”是什么的研究,得到了诸如+,-。&之类的运算符,所以我猜我在某处做了一个错误的运算符。我只包括有错误的部分代码,因为整个代码大约有2000行。代码中还有其他错误,但它们是相同的,所以我假设如果我能理解这个错误的原因,我应该能够找出这些错误 static int cmp_bk( const void *ap, const void *bp) { int a; int b; dynamic_cast&

我遇到了以下编译器错误:

“一元”的类型参数无效

我做了一些关于“一元数”是什么的研究,得到了诸如
+,-。&
之类的运算符,所以我猜我在某处做了一个错误的运算符。我只包括有错误的部分代码,因为整个代码大约有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;
}
static int cmp_bk(常数无效*ap,常数无效*bp)
{
INTA;
int b;
动态广播(*a)=ap;
动态_cast(*b)=bp;
如果(a->hashhash)返回-1;
如果(a->hash>b->hash)返回1;
返回(int)a->bk-(int)b->bk;
}
我得到的确切错误是:

“一元*”的类型参数无效

它被设置为两条线

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

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

我相信你想要的可能是指向
bk
的指针,不过:

bk * pa;
bk * pb;
pa = dynamic_cast<bk*>(ap);
pb = dynamic_cast<bk*>(bp);
bk*pa;
bk*pb;
pa=动态投影(ap);
pb=动态铸造(bp);
这只是一个猜测,因为我不知道您的
bk
类是如何定义的。现在还不清楚你是否真的想要一个动态演员阵容。也许你真正想要的是重新诠释演员阵容


不过,我无法理解您试图返回的内容,因此如果您解释一下,我可能可以说得更多。

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

我相信你想要的可能是指向
bk
的指针,不过:

bk * pa;
bk * pb;
pa = dynamic_cast<bk*>(ap);
pb = dynamic_cast<bk*>(bp);
bk*pa;
bk*pb;
pa=动态投影(ap);
pb=动态铸造(bp);
这只是一个猜测,因为我不知道您的
bk
类是如何定义的。现在还不清楚你是否真的想要一个动态演员阵容。也许你真正想要的是重新诠释演员阵容


不过,我无法理解您试图返回的内容,因此如果您解释一下,我可能可以说得更多。

a
b
int
s,那么
*a
对整数应该做什么?另外,您的cast看起来很奇怪,我假设您想
重新解释\u cast
指向
bk
a
b
的指针是
int
s,那么
*a
应该对整数做什么?另外,你的演员阵容看起来也很奇怪,我想你想
重新解释你的演员阵容
指向
bk

@K-ballo:不完全确定。我认为是这样。。。?更重要的是,我不确定OP是否真的意味着要在这里进行动态播放。也许真正需要的是
reinterpret\u cast
。@K-ballo:你是对的,动态cast永远不会成功,因为
bk
从来都不是
int
的基类。所以这几乎肯定是错误的,它应该是一个重新解释的cast。好的,所以我把它改为reinterpret_类,并遵循您的代码,但现在它说bk是未声明的。我的bk结构在一个静态联合中。我试着编辑我的原始帖子,但效果不好,所以我添加了一条评论,但它很难看,几乎不可读。简而言之,这是程序的一部分,它应该从另一个名为book(bk)的文件读取,然后将其传输到一个转置表(tt,我在那里也收到相同的错误),然后,它就可以让电脑做出最好的动作。@K-ballo:不完全确定。我认为是这样。。。?更重要的是,我不确定OP是否真的意味着要在这里进行动态播放。也许真正需要的是
reinterpret\u cast
。@K-ballo:你是对的,动态cast永远不会成功,因为
bk
从来都不是
int
的基类。所以这几乎肯定是错误的,它应该是一个重新解释的cast。好的,所以我把它改为reinterpret_类,并遵循您的代码,但现在它说bk是未声明的。我的bk结构在一个静态联合中。我试着编辑我的原始帖子,但效果不好,所以我添加了一条评论,但它很难看,几乎不可读。简而言之,这是程序的一部分,它应该从另一个名为book(bk)的文件读取,然后将其传输到一个转置表(tt,我在那里也收到相同的错误),这是我的bk级,它在一个静态联盟中。静态联合{static union{#define TTABLE(core.tt)struct tt{/*转置表条目/…省略…字符空间不足#define BOOK(core.bk)struct bk{/Opening book entry/unsigned long hash;/-identifications position/short move;/-move for this position/unsigned short count;/-Frequency*/}bk[CORE];}CORE;}CORE;}CORE;这是我的类bk。它在一个静态并集内。静态并集{static union{#define TTABLE(core.tt)struct tt{/*Transposition table entry/…省略…字符空间不足#define BOOK(core.bk)struct bk{/Opening book entry/unsigned long hash;/-标识位置/短移动;/-移动此位置/未签名短计数;/-Frequency*/}bk[CORE];}CORE;}CORE;