死亡的LNK2005(c ++)

时间:2018-01-15 09:56:50

标签: c++ include lnk2005

我有一个简单的课程:

Bunny.h

class Bunny
{
public: 
    Bunny(string givenName);
    ~Bunny();    
private:
    string name;
};

Bunny.cpp

#pragma once
#include "Bunny.h"
Bunny(string givenName)
{
     name = givenName;
};

(我重写了代码,因为我无法复制它,所以它只是一个快速编写的例子)

include.h文件#include s this和source.cpp #include s that one。每个文件只包含一次,source.cpp只包含一次includes.h文件。我确实用#ifndef,#define,#endif尝试了。 这两种方法都导致了同样的问题:编译器说这个函数(以及我添加的任何其他函数)都是多次声明的。 我还尝试将定义复制到source.cpp(Bunny.h和Bunny.cpp都按原样复制),错误消失了。

知道编译器为什么要定义这个函数两次

1 个答案:

答案 0 :(得分:0)

问题是在Includes.h文件中,我包含了Bunny.cpp而不是Bunny.h文件。然后编译器定义了两次函数,一次在cpp中,一次在includes.h中。