我有一个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`
什么原因导致此问题?
答案 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
。这些关键字适用于变量,不适用于类型声明。