我对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”
谢谢,
答案 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 */
}