当向前传递声明的结构或类时,必须通过引用或指针将其传递给函数。
但是,前向声明的枚举可以做什么呢?它是否还必须通过引用或指针传递?或者说,可以传递一个值吗?
下一个示例使用 g++ 4.6.1 编译良好:
#include <iostream>
enum class E;
void foo( const E e );
enum class E
{
V1,
V2
};
void foo( const E e )
{
switch ( e )
{
case E::V1 :
std::cout << "V1"<<std::endl;
break;
case E::V2 :
std::cout << "V2"<<std::endl;
break;
default:
;
}
}
int main()
{
foo( E::V1);
foo( E::V2);
}
构建:
g++ gy.cpp -Wall -Wextra -pedantic -std=c++0x -O3
上述标准是否符合标准,或者是否使用了扩展?
声明的枚举,即使您没有指定枚举器(标准称之为枚举器)不透明枚举声明) 是一个完整的类型,因此可以在任何地方使用。
为了完整起见,这里引用 §7.2 第 3 段:
An 不透明枚举声明是一个枚举的重新声明
在当前范围或新枚举的声明中。 [Note:一个
由一个声明的枚举不透明枚举声明已修复
基础类型并且是完整类型。枚举器列表可以是
在稍后的重新声明中使用枚举说明符提供。——尾注 ]
语法为不透明枚举声明,来自同一§7.2的第一段:
不透明枚举声明:
enum-key attribute-specifier-seqopt identifier enum-baseopt;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)