| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 583 人关注过本帖
标题:这个错误提示怎么回事
只看楼主 加入收藏
小旭哥
Rank: 2
等 级:论坛游民
帖 子:106
专家分:72
注 册:2012-11-4
结帖率:86.21%
收藏
已结贴  问题点数:5 回复次数:10 
这个错误提示怎么回事
class Date
{
public:
    static const int monthsPerYear = 12;
    Date( int = 1, int = 1, int = 1900 );
    void print() const;
    ~Date();

private:
    int month;
    int day;
    int year;

    int checkDay( int ) const;
};

我把这个类的定义放在头文件里,我是用静态链接库来写类的,当我build工程时, 出现如下错误
d:\个人资料\c++\classes\class.h(47) : error C2258: illegal pure syntax, must be '= 0'
d:\个人资料\c++\classes\class.h(47) : error C2252: 'monthsPerYear' : pure specifier can only be specified for functions

我确定是   static const int monthsPerYear = 12;  这里出问题了  因为我把它注释后就没有问题了,不知道哪里错了,以及为什么。怎么改
搜索更多相关主题的帖子: private classes public 
2012-11-09 13:19
liman123
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:79
专家分:178
注 册:2012-10-6
收藏
得分:1 
能把整段代码贴一下吗?估计应该是静态变量没用常函数去调用。
2012-11-09 14:10
小旭哥
Rank: 2
等 级:论坛游民
帖 子:106
专家分:72
注 册:2012-11-4
收藏
得分:0 
回复 2楼 liman123
我这只是类的定义  没别的代码了   我放在头文件里的
2012-11-09 17:28
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:1 

这样肯定是不行的,这个是类的声明,
class Date
 {
 public:
     static const int monthsPerYear;
……
……
 };

static const int Date::monthsPerYear = 12;
Date:: Date(int d, int m, int y )
{
……
}

注意,在cpp中 对静态const初始化

 


[ 本帖最后由 yuccn 于 2012-11-9 22:38 编辑 ]

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-11-09 22:35
zjf_to
Rank: 1
等 级:新手上路
帖 子:4
专家分:4
注 册:2012-7-20
收藏
得分:1 
static const int monthsPerYear = 12;这个写法是没有错的吧,你是不是用vc6.0的呢??
2012-11-10 12:20
liman123
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:79
专家分:178
注 册:2012-10-6
收藏
得分:0 
类中的静态变量的初始化只能这类的实现文件中!即类的定义之外.
2012-11-10 12:53
liman123
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:79
专家分:178
注 册:2012-10-6
收藏
得分:0 
四楼说的对。
2012-11-10 12:53
天剑山
Rank: 4
等 级:业余侠客
威 望:3
帖 子:119
专家分:266
注 册:2012-8-3
收藏
得分:1 
class Date
{
public:
    static const int monthsPerYear;
    Date( int = 1, int = 1, int = 1900 );
    void print() const;
    ~Date();

private:
    int month;
    int day;
    int year;

    int checkDay( int ) const;
};

static const int Date::monthsPerYear = 12;
这个要放在外面
2012-11-10 14:21
小旭哥
Rank: 2
等 级:论坛游民
帖 子:106
专家分:72
注 册:2012-11-4
收藏
得分:0 
回复 4楼 yuccn
我是用类的定义和实现放写静态库里的,是在那个写库的cpp文件里初始化静态变量么,还是在用户程序中初始化?
2012-11-13 16:24
小旭哥
Rank: 2
等 级:论坛游民
帖 子:106
专家分:72
注 册:2012-11-4
收藏
得分:0 
回复 6楼 liman123
那怎么告诉编译器,我这个静态变量是这个类的呢?
2012-11-13 16:25
快速回复:这个错误提示怎么回事
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022914 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved