类中的数组声明

#include <iostream>

using namespace std;
const int i = 1;
class T
{
    char arr[i];
    enum{i = 2};
};
int main()
{
    getchar();
}

为什么这个可以编译通过哦?我看ISO文档草稿,标准里面说那个重新定义了一个i是错的啊。我用clang,g++,vc编译都通过了。为什么编译器的实现不按照标准来呢?在《c++语言的设计和演化》一书中,说了这个是遵循ARM查找规则,但是不遵循ANSI/ISO标准。

阅读 3.8k
2 个回答

T::i
字数补丁~

你能告诉我你看的段落吗?
我看的标准里,类中定义的是T::i,并不是重定义。而且这个T::i还是私有的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题