c ++中的"nice"关键字?

ole*_*eks 6 c++

所以我正在做一些简单的C++练习,我注意到了一个有趣的壮举.归结为裸机可以尝试编译以下代码:

class nice
{
  public:
    nice() {}
};

int main()
{
  nice n;
  return 0;
};
Run Code Online (Sandbox Code Playgroud)

结果是编译错误,如下所示:

<file>.cpp: In function ‘int main()’:
<file>.cpp:11: error: expected `;' before ‘n’
<file>.cpp:11: warning: statement is a reference, not call, to function ‘nice’
<file>.cpp:11: warning: statement has no effect
Run Code Online (Sandbox Code Playgroud)

这是在Max OS X上使用常规g ++,我的一些朋友也试过Ubuntu,产生相同的结果.

这个专长似乎在于"好"这个词,因为重构它可以让我们编译.现在,我找不到C++或C关键字列表中的"好",所以我想知道这里是否有人有想法?

还有,推杆

class nice n;
Run Code Online (Sandbox Code Playgroud)

代替

nice n;
Run Code Online (Sandbox Code Playgroud)

解决了这个问题.

PS我是一个相对的C++新手,来自ActionScript/.NET/Java/Python世界.

更新:

对,我的坏,我也有

#include <iostream>
Run Code Online (Sandbox Code Playgroud)

在顶部,这似乎是问题的根源,因为没有它一切正常.

Mes*_*ssa 17

也许问题是由nicelibc中的函数引起的.它类似于尝试命名您的班级printf.


Duc*_*uck 3

这是命名空间问题,但与命名空间 std无关。标头<iostream>正在拉入<unistd.h>

\n\n

如果你试试

\n\n
class nice\n{\n  public:\n      nice() {};\n};\n\nint main(int argc, char *argv[])\n{\n    nice n;\n\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

没有问题。

\n\n

只需添加

\n\n
#include <unistd.h>\n
Run Code Online (Sandbox Code Playgroud)\n\n

并且您将收到“expected \xe2\x80\x98;\xe2\x80\x99 before \xe2\x80\x98n\xe2\x80\x99”错误。命名空间 std 不参与其中。

\n\n

所以解决方案和以前一样——将类nice放在它自己的命名空间中,它不会与全局::nice()冲突。

\n