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

dik*_*ant 1 c++

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

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

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

using namespace std;

int main() {
    World say;
    say.hello();
return 0;
}
Run Code Online (Sandbox Code Playgroud)

我一直收到错误声明:

"multiple definition of `World::hello()'"
Run Code Online (Sandbox Code Playgroud)

Ste*_*enG 5

你需要包括这个 main.cpp

#include "HelloWorld.h"

不是HeloWorld.cc文件.

  • OP解释为什么使用`#include"HelloWorld.cc"会导致多个定义会有所帮助. (2认同)
  • `HelloWorld.cc`被_already_编译到你的程序中,_along with_`main.cc`.通过`#include`到`main.cc`它会导致多个`World :: hello()`实例出现在程序中,从而导致该错误.头文件中的代码只是_declaration_,它不会产生任何实际编译的代码,这就是为什么包含在多个位置的安全. (2认同)