标签: c++ class declaration
考虑以下示例:
void foo() { class A; class A; } int main() { foo(); return 0; }
工作正常。为什么允许这种类型的重新划分?我很困惑......
UPD:请给我一个c ++规范的引用,如果可能的话,允许重新声明......
答案 0 :(得分:1)
§3.1 声明(第7条)可以将一个或多个名称引入翻译单元或由先前声明引入的重新声明名称。
这是第一个条款。
第二个条款规定了什么声明。我没有在这里复制,因为它包含了不少例子。
答案 1 :(得分:1)
Declaration和Definition是两个不同的概念。您可以在翻译单元中声明任意次数的名称。但该定义应该只出现一次。检查this和this
Declaration
Definition
答案 2 :(得分:1)
此外,如果每个类A在不同的cpp文件中声明为全局变量 如果用" -warn-common"