C++编译错误"a storage class can only be specified for objects and functions"解决方法

昨天在写积分器控制程序的时候,类里面定义了一个枚举类型,编译的时候出现了上述错误,造成错误的原因是在这个枚举类型前面有static修饰符,如下:

static enum cmd{IntHelp,IntDelayCharge,IntDelayDisCharge,IntStandard,IntPulse};

去掉前面的static编译通过。


对于这个错误,顾名思义,就是"storage class"的修饰符用在了对象或者变量(objects)和函数(functions)外的其他地方。

在C/C++规范中,定义了四种storage class的修饰符。

  • auto
  • register
  • static
  • extern

很显然,是这个"static"用的地方不对。查找了好多C++书籍和比较权威的解释,都指出这个"static"只能用于object和function。这个static用于修饰class的storage,很明显是错误的。去掉这个static,编译通过。

参见博客http://blog.csdn.net/weibin_168/article/details/6669736

你可能感兴趣的:(C++语言)