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

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

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

  • auto
  • register
  • static
  • extern

    我所遇到的这个编译错误所对应的代码是下面所示。

    class CDataSet{

         public:

                static enum ePrintRange

                {

                       ALLDATA = 0,

                       ......

                } 

                ......

              }  

    (本人在学习STL,从互联网上找来一些例子学习,本人在编译某个例子的过程中遇到这个问题)

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

    在Java中确实支持在某个类中定义一个内部static类,而Java的大部分语法的语义与C++比较接近,也许写这个例子的牛人想当然的认为C++中应该也有内部static类。

    说句题外话,从网上看到C++的例子后,如果觉得有疑惑的话,就不妨编译一下,总有收获的:或者加深了对原来知识的理解,或者学到了新的技术。

你可能感兴趣的:(C++开发)