C++ 新手 这个静态方法如何老是不能访问成员变量的~
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.
#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之类的东东是什么