您的位置:首页 > 移动开发 > Objective-C

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

2013-02-19 20:28 861 查看
对于这个错误,顾名思义,就是"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;的时候也会出现这样的提示。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐