[英]Undefined reference to a static member of the class
我正在做家庭作业,除了教授希望我们使用的令人讨厌的静态值外,我几乎完成了所有工作:
头文件包含:
private:
static int value;
而且我们必须有一个函数来计算值,如下所示:
static void calculate()
{
long a = 1L;
int count = 0;
while( a != 0 )
{
a = a << 1;
count++;
}
value = count;
}
本质上,这是使用位移来计算长整数的位数。
但是,我收到错误“对Class1 :: value的未定义引用”
我花了最后一个半小时才弄清楚这一点,这真使我丧命。 任何帮助都将是巨大的,所有搜索都将无效。
谢谢!
更新:
包括我
int Class1::value = 0;
但是,现在我收到一条错误消息,指出“错误:int Class1 :: value是私有的
在您的* .cpp文件中添加
int ClassName::value = 0;
这将为一个value
分配存储空间。
您在类声明中实际拥有的代码只是声明了该变量(使编译器意识到存在这样的变量)。 但是,必须声明和定义每个变量。 定义将确保为该变量保留存储空间,并创建一个编译器以前无法找到的符号。
您需要使用以下语法在(.cpp)源文件中定义静态数据成员:
datatype Your_ClassName::variable;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.