我是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“
谢谢,
发布于 2012-08-16 00:00:13
您需要定义Zeus::tick,通常需要在Zeus.cpp文件中定义。您只是声明了它。
double Zeus::tick = 0.0;此外,C++中也没有static class。
顺便说一句,自由函数可以放在名称空间中,而不是类的静态函数。这是C++中的首选方法,除非有很强的理由将函数设置为静态。
namespace Dionysus {
void testing();
}发布于 2012-08-16 00:01:24
正如错误消息所说:没有Zeus::tick的定义。将此代码添加到Zeus.cpp:
double Zeus::tick;哦,在Zeus.h中删除static
static class Zeus发布于 2012-08-16 00:08:51
在您拥有的main()函数中,语句Zeus::tick = 25.0;是什么意思?Zeus是一个类。因此,要访问它的各个元素,您需要创建它的实例。它就像一个结构,你首先创建它的实例来访问它的各个元素。
尝试以下操作:
int main() {
Zeus myobject;
myobject.tick = 25.0;
/* Rest of the definition */
} https://stackoverflow.com/questions/11972770
复制相似问题