读书人

C++ 新手 这个静态方法如何老是不能访

发布时间: 2012-08-01 17:53:41 作者: rapoo

C++ 新手求助 这个静态方法怎么老是不能访问成员变量的~~
#include<iostream>

using namespace std ;

class Time{
public :
Time(int hour = 12 ,int minute = 0 ,int second = 8 ) ;
~Time() ;
void showtime() ;
void setTime(int hour ,int minute ,int second) ;
static void countTime();

private:
int hrs ,mins ,secs;
static int counter ;
} ;


Time::Time(int hour ,int minute ,int second){
hrs = hour ;
mins = minute ;
secs = second ;
//counter ++ ;
}
Time::~Time(){
cout<<"the end!"<<endl ;
counter -- ;
}
void
Time::showtime(){
cout<<"the time is"<<hrs<<mins<<secs<<endl ;
return ;
}
void
Time::setTime(int hour ,int minute ,int second){
hrs = hour ;
mins = minute ;
secs = second ;
return ;
}
void
Time::countTime(){
cout<<"the count number is "<<hrs<<mins<<secs<<endl ;
return ;
}

int Time::counter = 0;
Time::countTime() ;

int main(){
Time aTime ;

aTime.showtime() ;
}





[解决办法]
静态方法本来就是不能访问成员变量的
[解决办法]
static 成员是类的组成部分 但不是任何对象的组成部分 所以不能访问成员函数 也没有this指针
[解决办法]
有几个问题:
1.

C/C++ code
void Time::countTime(){    cout<<"the count number is "<<hrs<<mins<<secs<<endl;  // 一个类的静态成员,先于对象存在    return ;                                              // 而hrs、mins、secs是非静态的,即}                                                             // 需要对象创建后才存在的// 比如,下面这样的调用:Time::countTime();// 就肯定会出问题,此时不知道要输入的hrs之类的东东是什么 

读书人网 >C++

热点推荐