注册 登录
编程论坛 C++教室

静态成员函数为什么不能调用静态数组呢????

sixleaves 发布于 2012-11-15 17:01, 572 次点击
#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;
}
6 回复
#2
sixleaves2012-11-15 17:01
求解释啊???哪里错了??
#3
liufashuai2012-11-15 19:00
你说的什么地方错了,我改了几个小地方,在我的电脑上可以运行:

下面为修改后的源代码:
程序代码:
#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;
}


#4
寒风中的细雨2012-11-15 20:01
回复 3楼 liufashuai
static 不初始化 就是未定义了
#5
JimQ2012-11-15 22:23
楼上,静态变量在定义时没有赋初值的话,系统自动给零或空字符啊,是吧?
#6
寒风中的细雨2012-11-15 22:36
回复 5楼 JimQ
针对上面的情况

类的 静态成员变量   不是


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

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





[ 本帖最后由 寒风中的细雨 于 2012-11-15 22:39 编辑 ]
#7
mmmmmmmmmmmm2012-11-16 09:06
类的静态变量初始化

学习了
1