我已经开始使用Java编程,我刚刚实现了我认为是"好"语言知识水平。
为了好玩,我决定开始使用C ++进行编程,我对这门语言还是比较新的,但我是一个快速学习者,而且我认为它离Java不远。
我创建了一个测试类,它具有值和名称作为属性,对象计数器作为全局变量。
textAreaVal
执行时,程序输出此错误:
#include<iostream>
/* local variable is same as a member's name */
class Test
{
private:
double x;
std::string name;
static int nb;
public:
Test(double x, std::string n)
{
this->x=x;
this->name=n;
nb=nb+1;
}
void setX (double x)
{
// The 'this' pointer is used to retrieve the object's x
// hidden by the local variable 'x'
this->x = x;
}
double getX()
{
return this->x;
}
std::string getName()
{
return this->name;
}
static int getNb()
{
return nb;
}
};
int main()
{
Test obj(3.141618, "Pi");
std::cout<<obj.getX()<<" "<<obj.getName()<<" "<<Test::getNb()<<std::endl;
return 0;
}
对我来说,有些中国人。
我不明白。
答案 0 :(得分:4)
在C ++中,static
变量本质上是围绕全局变量的语法糖。就像全局变量一样,它们必须在一个源文件中定义,其中包含:
int Test::nb;
如果你想用特定的值初始化它,
int Test::nb = 5; // or some other expression
答案 1 :(得分:0)
您的变量static int nb
需要初始化,因此您需要在课程后添加声明。
class YourClass
{
// some stuff
}; // Your class ends here
int Test::nb = 0;
int main() ...
以下是一些教程和信息tutorial point,cprogramming.com/tutorial/statickeyword