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

时间:2011-12-05 02:09:45

标签: c++ static

我正在进行家庭作业作业,除了我们的教授希望我们使用的这个令人讨厌的静态价值外,我几乎已经完成了所有工作:价值

头文件包含:

private:
    static int value;

我们必须有一个函数计算值,如下所示:

static void calculate()
{
    long a = 1L;
    int count = 0;

    while( a != 0 )
    {
        a = a << 1;
        count++;
    }

    value = count;
}

这主要是使用位移来计算long中的位数。

但是,我收到错误“未定义引用`Class1 :: value'

我花了最后一个半小时搞清楚了,这让我很伤心。任何帮助都会很棒,所有搜索都会失败。

谢谢!


更新

我包括

int Class1::value = 0;

但是,现在我收到一条错误消息“error:int Class1 :: value is private

2 个答案:

答案 0 :(得分:4)

在* .cpp文件中添加

int ClassName::value = 0;

这将为value分配存储空间。

您在类声明中实际拥有的代码只是声明此变量(使编译器意识到存在这样的变量)。但是,必须声明每个变量并定义。定义将确保为此变量留出存储空间并创建编译器之前无法找到的符号。

答案 1 :(得分:0)

您需要使用以下语法在(.cpp)源文件中定义静态数据成员:

datatype Your_ClassName::variable;