重载链接错误

时间:2014-03-12 15:06:25

标签: c++ linker overloading default

所以我有一个带有默认值函数的标题:

head.h:

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

head.cpp:

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

source.cpp:

a(1, 2, NULL);
a(1, 2);

我在链接阶段遇到错误:

undefined reference to a(int, int, bool*)

我也尝试删除默认值:

head.h:

a(int x, int y, bool* b);
a(int x, int y);

head.cpp:

a(int x, int y, bool* b){...}
a(int x, int y){...}

source.cpp:

a(1, 2, NULL);
a(1, 2);

使用相同的错误进行链接:

undefined reference to a(int, int, bool*)
undefined reference to a(int, int)

这可能是什么?我的编译器不好?坏的makefile?

修改

它接缝真正的头文件看起来像:

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

const,抱歉错误。

3 个答案:

答案 0 :(得分:1)

它接缝我在标头中用const变量定义了函数,但是在没有const的cpp中实现它,因此链接器无法找到函数的实现。

答案 1 :(得分:0)

gcc -o source source.cpp header.cpp命令应该像这样

我想你忘记了header.cpp

答案 2 :(得分:0)

试试这个

首先单独编译程序并生成目标文件

gcc -c header.c

gcc -c source.c

然后像这样生成exe

gcc header.o source.o -o exefile