我认为我们可以在任何情况下随时重新声明一个名字。但
class A
{
static int a;
static int a;
};
返回编译时错误:
test.cpp:4:13: error: redeclaration of ‘int A::a’
test.cpp:3:13: note: previous declaration ‘int A::a’
实际上可以重新声明哪些名称?
答案 0 :(得分:2)
根据C ++标准(9.2级成员,第1段)
成员不得在成员规范中声明两次, 除了可以声明嵌套类或成员类模板 然后定义,除了枚举可以 引入了一个opaque-enum-declaration,后来又重新声明了 enum-specifier。
答案 1 :(得分:1)
C ++ 11 9.2 / 1 [class.mem]
成员不应在 member-specification 中声明两次,除非可以声明嵌套类或成员类模板,然后再定义,除了可以引入枚举 opaque-enum-declaration ,稍后使用枚举说明符重新声明。
答案 2 :(得分:0)
除了其他答案之外,您的代码不仅是重新声明,而且是重新定义,这显然违反了单一定义规则。