C ++错误LNK2001问题

时间:2012-08-15 15:58:18

标签: c++

我对cpp很新,但已经在c#工作了一段时间。我试图运行一个简单的控制台应用程序,但我收到此LNK2001错误消息。

我有main.cpp,并添加了另一个类Zeus,文件,Zeus.h和Zeus.cpp。

这是main.cpp:

#include "Zeus.h"
#include <iostream>

int main()
{
    Zeus::tick = 25.0;
    using std::cout;
    cout << "nothing";
}

这是Zeus.h:

static class Zeus
{
public:
    static void testing(void);
public:
    static double tick;
};

这是Zeus.cpp:

void Zeus::testing(void)
{
 //Doesnt get this far
 //But eventually something like
 // cout << "test " << Zeus::tick;

}

以下是错误消息:

错误20错误LNK2001:未解析的外部符号“public:static double Zeus :: tick”

谢谢,

3 个答案:

答案 0 :(得分:1)

您需要定义Zeus::tick,通常您会在Zeus.cpp文件中定义double Zeus::tick = 0.0; 。你只是声明了它。

static class

此外,C ++中没有namespace Dionysus { void testing(); }

另外,自由函数可以放在命名空间中,而不是类的静态函数。这是C ++中的首选方法,除非有充分理由使该函数成为静态函数。

{{1}}

答案 1 :(得分:0)

正如错误消息所示:Zeus::tick没有定义。将其添加到Zeus.cpp:

double Zeus::tick;

哦,在Zeus.h中删除static

static class Zeus

答案 2 :(得分:0)

在您拥有的main()函数中,声明Zeus::tick = 25.0;是什么意思? Zeus是一个班级。因此,要访问它的各个元素,您需要创建它的实例。它就像一个结构,你首先创建它的实例来访问它的各个元素。

尝试以下方法:

int main() {
    Zeus myobject;

    myobject.tick = 25.0;
    /* Rest of the definition */ 
}