0

我对 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";
}

这是宙斯.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”

谢谢,

4

3 回答 3

1

您需要定义Zeus::tick,通常您会在Zeus.cpp文件中定义。你只是宣布了它。

double Zeus::tick = 0.0;

此外,C++ 中也没有static class

顺便说一句,自由函数可以放在命名空间中,而不是类的静态函数。这是 C++ 中的首选方式,除非有充分的理由让函数保持静态。

namespace Dionysus {
  void testing();
}
于 2012-08-15T16:00:12.550 回答
0

正如错误消息所说:没有Zeus::tick. 将此添加到 Zeus.cpp:

double Zeus::tick;

哦,在 Zeus.h 中删除staticfrom

static class Zeus
于 2012-08-15T16:01:23.627 回答
0

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

尝试以下操作:

int main() {
    Zeus myobject;

    myobject.tick = 25.0;
    /* Rest of the definition */ 
}  
于 2012-08-15T16:08:50.823 回答