• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++编译错误"astorageclasscanonlybespecifiedforobjectsandfunctions"解决 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

对于这个错误,顾名思义,就是"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++的例子后,如果觉得有疑惑的话,就不妨编译一下,总有收获的:或者加深了对原来知识的理解,或者学到了新的技术。

  还有在使用extern class a;的时候也会出现这样的提示。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#注册判断用户名是否重复发布时间:2022-07-13
下一篇:
Canny算子c++发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap