gpt4 book ai didi

c++ - 我可以传递前向声明枚举的值吗?

转载 作者:可可西里 更新时间:2023-11-01 16:36:33 24 4
gpt4 key购买 nike

当向前传递声明的结构或类时,必须通过引用或指针将其传递给函数。

但是,可以用前向声明的枚举做什么?它是否也必须通过引用或指针传递?或者,它可以传递一个值吗?

下一个示例使用 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 opaque-enum-declaration is either a redeclaration of an enumeration in the current scope or a declaration of a new enumeration. [Note: An enumeration declared by an opaque-enum-declaration has fixed underlying type and is a complete type. The list of enumerators can be provided in a later redeclaration with an enum-specifier. —end note ]

opaque-enum-declaration 的语法,来自同一 §7.2 的第一段:

opaque-enum-declaration:

enum-key attribute-specifier-seqopt identifier enum-baseopt;

关于c++ - 我可以传递前向声明枚举的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8911188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com