无法访问静态方法 (C++)
unable to access static methods (C++)
代码如下:
#include <iostream>
using namespace std;
class Zaix
{
private:
static int mor;
public:
static int beri;
static void setmor(int lip)
{
Zaix::mor=lip;
}
static int getmor(void)
{
return mor;
}
};
int Zaix::beri=3;
int main()
{
cout<<Zaix::beri<<endl;
Zaix::beri++;
cout<<Zaix::beri<<endl;
Zaix::setmor(6);
return 0;
}
现在,main()
函数 Zaix::setmor(6);
的第 4 行以某种方式使代码 Zaix::mor=lip;
的第 11 行无效。注释掉这一行后,整个编译就OK了,有了它,编译器给出了这个错误:
undefined reference to Zaix::mor"
Any idea why that is?
同样在class外定义变量。
int Zaix::mor;
作业:
int Zaix::mor = 4;
在 C++ 中,我们需要在其外部定义 class 的所有静态成员变量,否则会出现链接错误。你只需要像下面那样做:-
int Zaix::mor;// Just add this line below int Zaix::beri = 3;
代码如下:
#include <iostream>
using namespace std;
class Zaix
{
private:
static int mor;
public:
static int beri;
static void setmor(int lip)
{
Zaix::mor=lip;
}
static int getmor(void)
{
return mor;
}
};
int Zaix::beri=3;
int main()
{
cout<<Zaix::beri<<endl;
Zaix::beri++;
cout<<Zaix::beri<<endl;
Zaix::setmor(6);
return 0;
}
现在,main()
函数 Zaix::setmor(6);
的第 4 行以某种方式使代码 Zaix::mor=lip;
的第 11 行无效。注释掉这一行后,整个编译就OK了,有了它,编译器给出了这个错误:
undefined reference to Zaix::mor" Any idea why that is?
同样在class外定义变量。
int Zaix::mor;
作业:
int Zaix::mor = 4;
在 C++ 中,我们需要在其外部定义 class 的所有静态成员变量,否则会出现链接错误。你只需要像下面那样做:-
int Zaix::mor;// Just add this line below int Zaix::beri = 3;