繁体   English   中英

访问具有相同名称的外部结构

[英]Access outer struct with the same name

看看我的示例代码

struct A
{
   int member;
};

int main()
{
   int A; //Line 1
   A b;   //Line 2 
   b.member = int(); //Line 3
}

错误是

prog.cpp: In function ‘int main()’:
prog.cpp:9: error: expected `;' before ‘b’
prog.cpp:9: warning: statement has no effect
prog.cpp:10: error: ‘b’ was not declared in this scope

如何在第二行访问结构A? 为什么我还是得到错误?

如何删除第2行中的错误?

使用Elaborated Type Specifier,即代替写A b; struct A b;

3.4.4详细说明的类型说明符

精心设计的类型说明符可用于引用先前声明的类名或枚举名, 即使该名称已被非类型声明隐藏(3.3.7) elaborated-type-specifier中的class-name或enum-name可以是简单的标识符,也可以是qualified-id。


为什么我还是得到错误?

因为A外主要被定义后内主要隐藏int A 访问struct A的唯一方法是使用elaborated-type-specifier。

3.3.7名称隐藏

2)类名(9.1)或枚举名(7.2)可以通过在同一范围内声明的对象,函数或枚举器的名称隐藏。 如果类或枚举名称以及对象,函数或枚举器在同一作用域(按任何顺序)中声明具有相同名称 ,则在对象,函数或枚举器名称可见的任何位置都会隐藏类或枚举名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM