我创建了一个名为Types:
enum Types {Int,Double,String};
Run Code Online (Sandbox Code Playgroud)
当我创建一个对象并使用其中一个枚举允许值初始化它时,我收到以下错误:"错误:不允许输入类型名称".
Types ty = Types.Double;
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
Col*_*mbo 12
在C++中,有两种不同类型的枚举 - 作用域和未作用域(前者随C++ 11引入).对于未作用域的枚举器,名称直接引入封闭范围.
N3337§7.2/ 10
每个枚举名称和每个未作用域的枚举器都在包含枚举说明符的作用域中声明.每个作用域 枚举器都在枚举范围内声明.这些名称遵守为(3.3)和(3.4)中的所有名称定义的范围规则.
您的枚举是无范围的,因此写入就足够了
Types ty = Double;
Run Code Online (Sandbox Code Playgroud)
对于作用域枚举,顾名思义,枚举数在枚举范围内声明,并且必须使用enumeration-name进行限定:
enum class ScopedTypes {Int,Double,String};
enum UnscopedTypes {Int,Double,String};
ScopedTypes a = ScopedTypes::Double;
//ScopedTypes b = Double; // error
UnscopedTypes c = UnscopedTypes::Double;
UnscopedTypes d = Double;
Run Code Online (Sandbox Code Playgroud)
要么使用
Types ty = Double;
Run Code Online (Sandbox Code Playgroud)
要么
enum class Types {Int,Double,String};
Types ty = Types::Double;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19119 次 |
| 最近记录: |