重新声明类类型的名称
Redeclaration of name of class type
考虑以下示例:
void foo()
{
class A;
class A;
}
int main()
{
foo();
return 0;
}
它工作得很好。为什么允许重新命名类类型?我困惑…
UPD:请给我一个c++规范中允许这样重新声明的引用…如果可能的话。
§3.1声明(第7条)可以在翻译单元中引入一个或多个名称,也可以重新声明先前声明引入的名称。
在第一个从句中。
第二个子句指定什么是声明。我没有把它复制到这里,因为它包含了很多例子。
Declaration
和Definition
是两个不同的概念。您可以在翻译单元中任意次数地声明一个名称。但是这个定义应该只出现一次。检查这个和这个
此外,如果每个类A在不同的cpp文件中作为全局变量声明如果使用"-warn-common"
相关文章:
- std::unordered_map 类型对象声明期间出现"field has incomplete type"错误
- 如何为非类型模板声明指向对象的指针?
- 使用其他模板类型参数作为要在函数签名中使用的类型别名声明
- 使用函数类型语法声明成员函数
- 应用于类型别名声明的 [[maybe_unused]] 属性的语法
- 了解函数错误的歧义新声明
- C 返回类型指针声明
- 为什么我可以使用类型别名声明常量引用
- 我可以使用名称而不是类型来声明对象文字吗?
- 新声明在使用delete时包含垃圾值和堆损坏
- 使用类型推断声明变量是否与"classical way"变量名称后用括号初始化变量一样有效?
- 是否有C#中的C 新声明
- 返回类型的声明类型时,应用于三元(?:)表达式
- 不完整的类型/正向声明
- 使用if语句选择类型来声明变量C++
- 如何使用const_reference类型来声明一个变量并为其赋值 front() 函数的返回值
- 类型未声明为c++
- 为什么即使模板类型被声明为“类”,“类型名”仍然是必需的
- 以下类型的声明是否完全有效
- 获取错误:新声明符中的表达式必须具有整型或枚举类型C++