错误:在"="令牌之前应存在非限定 ID

error:expected unqualified-id before '=' token

本文关键字:存在 ID 令牌 错误      更新时间:2023-10-16

我在使用g++时不断收到这个错误。

这是有问题的代码行:

Register register = new Register(til_amt, num_ones);

标题定义如下:

Register(int, int);

以下是实现定义:

Register::Register(int amt, int ones)
{
    init();
    til_amt += amt;
    num_ones += ones;
}

init()函数是内联定义的,只需将字段设置为0。我已经将问题隔离到这些代码行中,并且我在stackoverflow/google上搜索了所有内容,但似乎无法解决问题。我甚至尝试将对象实例化分为两行,但也没有成功。

register是一个关键字。它不能用作变量。

来自C++标准:

7.1.1存储类说明符[dcl.stc]

1存储类说明符是

        存储类说明符:registerstaticthread_localexternmutable

register是一个关键字,因此不能将其用作变量名。将其重命名为其他任何名称,它应该可以工作。

它应该向编译器提示变量可以存储在寄存器中,但看起来大多数编译器都会自己决定这一点(有点像inline,尽管inline更有意义)。