为什么我的标头实现不起作用?

时间:2015-09-07 03:10:48

标签: c++

我试图在标题中声明函数并在单独的文件中实现它们。

我有一个可以实例化World的主类:

#include "World.cc"
#include <iostream>

using namespace std;

int main() {
    World say;
    say.hello();
return 0;
}

我一直收到错误声明:

"multiple definition of `World::hello()'"

2 个答案:

答案 0 :(得分:5)

您需要包含此main.cpp

#include "HelloWorld.h"

不是HeloWorld.cc文件。

答案 1 :(得分:2)

您希望在头文件中包含声明,并将实现分开。客户端代码(在您的情况下为main)只需要声明,因此它应包含标题:

#include "World.h"

预处理器包含非常简单;它只是将#include行替换为它命名的文件的内容。当您包含源文件World.cc时,您导致使用main.o目标文件构建定义。然后,当您将main.oWorld.o相关联时,它们都包含World.cc函数的定义。