使用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上进行了搜索,并且可以'似乎解决了这个问题。我甚至尝试将对象实例化分成2行,但这也不起作用。
答案 0 :(得分:3)
register
是一个关键字。它不能用作变量。
来自C ++标准:
7.1.1存储类说明符 [dcl.stc]
1存储类说明符是
storage-class-specifier:register
static
thread_local
extern
mutable
答案 1 :(得分:1)
register
是一个关键字,因此您无法将其用作变量名称。将其重命名为其他任何内容都应该有效。
应该向编译器暗示变量可以存储在寄存器中,但看起来大多数编译器会自行决定(有点像inline
,尽管inline
有更多意)。