class A
{
private:
int a;//non-static
public:
A(int init):a(init){}
static getvalue(){return a;}/*错误,无法访问属于类对象的非静态数据成员*/
};
2、無法訪問非靜態成員函數
class A
{
private:
int a;//non-static
public:
A(int init):a(init){}
int getvalue(){return a;}//non-static
static printvalue(){cout << getvalue() << endl;}/*错误,无法访问非静态成员函数*/
};
3、隻能調用其餘的靜態成員函數
class A
{
private:
static int staticvalue;
int a;//non-static
public:
A(int init):a(init){}
static int getvalue(){return staticvalue;}
static printvalue(){cout << getvalue() << endl;}
};
int A::staticvalue = 2;//类外的定义
int main(int argc , char *argv[])
{
A demo(1);
demo.printvalue();
A::printvalue();
return 0;
}
建議你還是把代碼貼出來。我總結了一下關於靜態數據成員和靜態成員函數的一些知識點,希望對你有用!
靜態成員函數不和任何對象相關聯,所以
1、無法訪問屬於類對象的非靜態數據成員
2、無法訪問非靜態成員函數
3、隻能調用其餘的靜態成員函數
BTW:靜態數據成員必須在類的外部定義
樓上說的有問題,靜態函數是最好隻引用靜態數據成員,但也可以引用非靜態的數據成員。如果引用對象中的非靜態數據成員可以聲明函數static bool foo(A & a)。
lz
這裏const std::string& iVariable並不是類A中的數據成員,為什麼要用靜態函數來處理呢?