静态枚举忽略类内的警告

时间:2018-08-27 12:49:46

标签: c++

我有一个Class,里面有这段代码:

public:
    static enum AnimalTypes {Mammals, Fish, Birds, Horse, MammalsFish, Flamingo, GoldFish, Mermaid};

但随后我收到此警告:

Warning C4091 'static ': `ignored on left of 'const Zoo::AnimalTypes' when no variable is declared   Line 269`

什么原因导致此问题?

3 个答案:

答案 0 :(得分:1)

静态-表示类变量,而不是实例变量。
const -表示不可更改(不可更改)变量。
两者都与枚举定义无关。枚举不是变量。

因此应该是:

public:
    enum AnimalTypes {Mammals, Fish, Birds, Horse, MammalsFish, Flamingo, GoldFish, Mermaid};

答案 1 :(得分:1)

从您的评论中可以看出,您正在尝试声明一个枚举类型AnimalTypes,该枚举类型可用于代码中的所有类。

对于globe enmu,请在头文件中按以下方式使用。

#ifndef HEADER_H
#define HEADER_H

enum AnimalTypes {Mammals, Fish, Birds, Horse, MammalsFish, Flamingo, GoldFish, Mermaid};

这可以从任何班级进行访问,

AnimalTypes  at = Mammals;

但是,如果您在类中声明枚举,则访问样式会有所不同。

class Base
{
public:

enum AnimalTypes {Mammals, Fish, Birds, Horse, MammalsFish, Flamingo, GoldFish, Mermaid};
  ...
};

访问方式,

Base::AnimalTypes bat = Base::Mammals;

您不应使用static来声明枚举类型。但是您可以使用它来声明类变量。

答案 2 :(得分:0)

您那里有static const,这表明您正在尝试声明一个类成员变量,但随后您还得到了enum AnimalTypes {...},这表明您正在试图声明一个枚举类型

如果您想做第一件事(可能不是),则将变量名放在右括号和分号之间。如果尝试声明枚举类型,则不应使用static const。这些关键字适用于变量,不适用于类型声明。