首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++错误LNK2001问题

C++错误LNK2001问题
EN

Stack Overflow用户
提问于 2012-08-15 23:58:18
回答 3查看 274关注 0票数 0

我是cpp的新手,但在c#已经有一段时间了。我正在尝试运行一个简单的控制台应用程序,但是我收到了这个LNK2001错误消息。

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

下面是main.cpp:

代码语言:javascript
复制
#include "Zeus.h"
#include <iostream>

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

这是Zeus.h:

代码语言:javascript
复制
static class Zeus
{
public:
    static void testing(void);
public:
    static double tick;
};

下面是Zeus.cpp:

代码语言:javascript
复制
void Zeus::testing(void)
{
 //Doesnt get this far
 //But eventually something like
 // cout << "test " << Zeus::tick;

}

下面是错误消息:

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

谢谢,

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-16 00:00:13

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

代码语言:javascript
复制
double Zeus::tick = 0.0;

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

顺便说一句,自由函数可以放在名称空间中,而不是类的静态函数。这是C++中的首选方法,除非有很强的理由将函数设置为静态。

代码语言:javascript
复制
namespace Dionysus {
  void testing();
}
票数 1
EN

Stack Overflow用户

发布于 2012-08-16 00:01:24

正如错误消息所说:没有Zeus::tick的定义。将此代码添加到Zeus.cpp:

代码语言:javascript
复制
double Zeus::tick;

哦,在Zeus.h中删除static

代码语言:javascript
复制
static class Zeus
票数 0
EN

Stack Overflow用户

发布于 2012-08-16 00:08:51

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

尝试以下操作:

代码语言:javascript
复制
int main() {
    Zeus myobject;

    myobject.tick = 25.0;
    /* Rest of the definition */ 
}  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11972770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档