标题:静态成员函数为什么不能调用静态数组呢????
只看楼主
sixleaves
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-10-21
结帖率:100%
 问题点数:0 回复次数:6 
静态成员函数为什么不能调用静态数组呢????
#include <iostream>
using namespace std;
class Event{
    private:
        int day;
        int month;
        static int year;
        static int m[13];
    public:
        int getDay(){return day;}
        int getMonth(){return month;}
        void setDay(int d){day = d;}
        void setMonth(int m){month = m;}
        void setYear(int y){ year = y;}
        int getYear(){return year;}
        int operator-(Event & e);
        static void setM();
};
void Event::setM(){
            int i,j;
            for(i = 1,j = 12;i < j;i++,j--){
                if(i%2)
                     m[i] = m[j] =31;
                 else
                     m[i] = m[j] =30;
                }
                m[7] = 31;
                if(year % 4)
                    m[2] = 29;
                else
                    m[2] = 28;
}
int Event::operator-(Event & e){
    Event::setM();
}

int main()
{
   
    return 0;
}
搜索更多相关主题的帖子: void private include public return 
2012-11-15 17:01
sixleaves
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-10-21
得分:0 
求解释啊???哪里错了??
2012-11-15 17:01
liufashuai
Rank: 9Rank: 9Rank: 9
来 自:冥界-魔域-魂殿
等 级:蜘蛛侠
威 望:1
帖 子:370
专家分:1374
注 册:2012-6-22
得分:0 
你说的什么地方错了,我改了几个小地方,在我的电脑上可以运行:

下面为修改后的源代码:
程序代码:
#include <iostream>
using namespace std;
class Event{
    private:
        int day;
        int month;
        static int year;
        static int m[13];
    public:
        int getDay(){return day;}
        int getMonth(){return month;}
        void setDay(int d){day = d;}
        void setMonth(int m){month = m;}
        void setYear(int y){ year = y;}
        int getYear(){return year;}
        int operator-(Event & e);
        static void setM();
};

int Event::year = 2012;  //静态变量类外初始化
int Event::m[13] = {0};  //静态变量类外初始化
void Event::setM(){
            int i,j;
            for(i = 1,j = 12;i < j;i++,j--){
                if(i%2)
                     m[i] = m[j] =31;
                 else
                     m[i] = m[j] =30;
                }
                m[7] = 31;
                if(year % 4)
                    m[2] = 29;
                else
                    m[2] = 28;
}
int Event::operator-(Event & e)
{
    Event::setM();
    return 1;    //这个地方要么返回一个值,要么不返回,你看着修改
}

int main()
{
    return 0;
} 



有一种落差是,你配不上自己的野心,也辜负了所受的苦难。






2012-11-15 19:00
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
得分:0 
回复 3楼 liufashuai
static 不初始化 就是未定义了
2012-11-15 20:01
JimQ
Rank: 2
来 自:甘肃定西
等 级:论坛游民
帖 子:14
专家分:21
注 册:2012-11-13
得分:0 
楼上,静态变量在定义时没有赋初值的话,系统自动给零或空字符啊,是吧?
2012-11-15 22:23
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
得分:0 
回复 5楼 JimQ
针对上面的情况

类的 静态成员变量   不是


最简单的方式 可以 自己写个程序跑跑

如果是其他方式定义的静态变量  ls可以那么理解





[ 本帖最后由 寒风中的细雨 于 2012-11-15 22:39 编辑 ]
2012-11-15 22:36
mmmmmmmmmmmm
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:8
帖 子:388
专家分:1809
注 册:2012-11-2
得分:0 
类的静态变量初始化

学习了

我们的目标只有一个:消灭0回复!
while(1)
++money;
2012-11-16 09:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-387158-1-1.html




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

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