繁体   English   中英

对类的静态成员的未定义引用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM