我试图在标题中声明函数并在单独的文件中实现它们。
我有一个可以实例化World的主类:
#include "World.cc"
#include <iostream>
using namespace std;
int main() {
World say;
say.hello();
return 0;
}
我一直收到错误声明:
"multiple definition of `World::hello()'"
答案 0 :(得分:5)
您需要包含此main.cpp
#include "HelloWorld.h"
不是HeloWorld.cc
文件。
答案 1 :(得分:2)
您希望在头文件中包含声明,并将实现分开。客户端代码(在您的情况下为main
)只需要声明,因此它应包含标题:
#include "World.h"
预处理器包含非常简单;它只是将#include
行替换为它命名的文件的内容。当您包含源文件World.cc
时,您导致使用main.o
目标文件构建定义。然后,当您将main.o
与World.o
相关联时,它们都包含World.cc
函数的定义。