C++ 过载链接错误

C++ 过载链接错误,c++,linker,overloading,default,C++,Linker,Overloading,Default,因此,我有一个带有默认值函数的标题: 标题h: a(int x, int y, bool* b = NULL); a(int x, int y, bool* b); a(int x, int y); head.cpp: a(int x, int y, bool* b = NULL){...} a(int x, int y, bool* b){...} a(int x, int y){...} source.cpp: a(1, 2, NULL); a(1, 2); a(1, 2, NUL

因此,我有一个带有默认值函数的标题:

标题h:

a(int x, int y, bool* b = NULL);
a(int x, int y, bool* b);
a(int x, int y);
head.cpp:

a(int x, int y, bool* b = NULL){...}
a(int x, int y, bool* b){...}
a(int x, int y){...}
source.cpp:

a(1, 2, NULL);
a(1, 2);
a(1, 2, NULL);
a(1, 2);
我在链接阶段遇到了一个错误:

undefined reference to a(int, int, bool*)
我还尝试删除默认值:

标题h:

a(int x, int y, bool* b = NULL);
a(int x, int y, bool* b);
a(int x, int y);
head.cpp:

a(int x, int y, bool* b = NULL){...}
a(int x, int y, bool* b){...}
a(int x, int y){...}
source.cpp:

a(1, 2, NULL);
a(1, 2);
a(1, 2, NULL);
a(1, 2);
链接时出现相同错误:

undefined reference to a(int, int, bool*)
undefined reference to a(int, int)
这会是什么?我的编译器坏了?错误的生成文件

编辑

它与真正的头文件类似:

a(const int x, const int y, bool* b = NULL);

使用
const
,很抱歉出错。

gcc-o source-source.cpp header.cpp
命令应如下所示

gcc header.o source.o -o exefile
我想你忘了标题。请像这样试试

gcc header.o source.o -o exefile
首先单独编译程序并生成目标文件

gcc -c header.c

gcc -c source.c
然后像这样生成exe

gcc header.o source.o -o exefile

我用
const
变量在头文件中定义函数,但在cpp中实现它时没有
const
,因此链接器找不到函数的实现。

你能给我们看一下生成文件吗?你用头文件编译source.cpp了吗?你怀疑编译器和生成文件。也许告诉我们你使用什么编译器并发布你的makefile。它非常有效,即使对于大型项目也不会引起问题。。cpp是用gccif编译的,它正在工作,那么你到底在问什么?我问的是我要问的问题。它不是特定文件的生成文件。这是一个大型项目的动态生成文件。