c++-linux g++编译器处理枚举类型的问题

问题描述

linux g++编译器处理枚举类型的问题

简易代码如下

 #include <iostream>
enum MyEnum
{
    F = 0,
    T = 1
};

bool juge(MyEnum x)
{
    if (x == MyEnum::F)
    {
        return false;
    }
    else
    {
        return true;
    }
}

int main(int argc, char** argv)
{
    MyEnum x = MyEnum::T;
    if (juge(x))
    {
        std::cout << "true" << std::endl;
    }
    else
    {
        std::cout << "false" << std::endl;
    }
    return 0;
}

既不是类也不是命名空间。
windows下的VS2013编译没有问题,为啥linux的G++不能接受。

解决方案

C++中的枚举直接作为常量使用
enum MyEnum
{
F = 0,
T = 1
};

判断直接使用
if(X==F)

而MyEnum::F这种使用为当这个枚举被命名空间作用才可以
例如
namespace MyEnum
{
enum TESTEnum
{
F = 0,
T = 1
};
}

解决方案二:

编译器差异,直接if(x == F)就行了

解决方案三:

这个是VS的一个扩展。
My enum is not a class or namespace

时间: 2024-10-22 22:20:19

c++-linux g++编译器处理枚举类型的问题的相关文章

[CLR via C#]15. 枚举类型和位标志

原文:[CLR via C#]15. 枚举类型和位标志 一.枚举类型 枚举类型(enumerated types)定义了一组"符号名称/值"配对. 例如,以下Color类型定义了一组符号,每个符号都标识一种颜色: internal enum Color { While, //赋值0 Red, //赋值1 Green, //赋值2 Blue, //赋值3 Orange //赋值4 } 使用枚举类型的好处: 1)枚举类型使程序更容易编写.阅读和维护.有了枚举类型,符号名称可在代码中随便使用

第十三章 枚举类型与位标记[《.net框架程序设计》读书笔记]

.net框架|笔记|程序|设计 第十三章 枚举类型与位标记 一. 枚举类型 1. 使用枚举类型的理由: l 枚举类型是得程序更容易编写.阅读.维护,在代码中使用符号名称代替数字是程序设计的一贯主张. l 强类型的,便于类型检验 2. 注意事项: l 枚举类型继承自System.Enum,System.Enum又继承自System.ValurType l 枚举类型不能定义方法.属性.事件 l 枚举类型为常数而非只读字段,因此可能引入版本问题(见第八章的相关讨论) l 将枚举类型与引用它的类型定义在

枚举类型的用法

C# 语言规范 14.3 枚举成员枚举类型声明的体用于定义零个或多个枚举成员,这些成员是该枚举类型的命名常数.任意两个枚举成员不能具有相同的名称. enum-member-declarations:(枚举成员声明:) enum-member-declaration(枚举成员声明)enum-member-declarations , enum-member-declaration(枚举成员声明 , 枚举成员声明) enum-member-declaration:(枚举成员声明:) attribut

C/C++中枚举类型(enum)

如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型.之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来. 举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它! enum box{pencil,pen};//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元素也称枚举元素在这里是pencil和pen,分别表示铅

JDK1.5枚举类型学习

Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口. 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征. 1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例. 2.所有枚举值都是public , static , final的.注意这一点只是针对于枚举值,我们可以和在普通类里面定义 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的

Java魔法堂:枚举类型详解

一.前言   Java的枚举类型相对C#来说具有更灵活可配置性,Java的枚举类型可以携带更多的信息. // C# enum MyColor{ RED = 0, BLUE = 1 } Console.Write(MyColor.RED); // Java enum MyColor{ RED("Hot", 4), BLUE("SAD",8); private String mood; public String getMood{ return mood; } priv

深度分析 Java 的枚举类型:枚举的线程安全性及序列化问题(转)

写在前面: Java SE5 提供了一种新的类型 Java的枚举类型,关键字 enum 可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用,这是一种非常有用的功能.本文将深入分析枚举的源码,看一看枚举是怎么实现的,是如何保证线程安全的,以及为什么用枚举实现的单例是最佳方式. 枚举是如何保证线程安全的 要想看源码,首先得有一个类吧,那么枚举类型到底是什么类呢?是enum吗?答案很明显不是,enum就和class一样,只是一个关键字,他并不是一个类,那么枚举是由

C语言详解 - 枚举类型

如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型.之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来.  举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它! enum box{pencil,pen};//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元素也称枚举元素在这里是pencil和pen,分别表示

Java枚举类型enum

枚举的语法1.Enum的全称为enumeration,中文俗称枚举类,学过C/C++等语言的人,应该都对它略知一二.    但在Java语言规范中,是在JDK 5版本中才引入的,存放在 java.lang 包中.在Java版的Enum实质是语法糖,其声明方式如下: [代码1] package com.enumtest; public enum Color { RED,BLUE,BLACK,YELLOW,GREEN //注意这里可以没有分号 }   enum是用来声明枚举的关键字,声明定义的类都隐