主程序中的函数正常,否则未定义的引用

function in main program OK, undefined references otherwise

本文关键字:未定义 引用 函数 主程序      更新时间:2023-10-16

我有一个函数,当在我的程序的主文件中定义时,它会按照我的意愿工作,并在头文件中定义时产生许多未定义的引用。

此头文件存在:

#include "Domain.h"
#include "Character.h"
class Item {
    public:
        Character input;
        Item(Character c2);
};
Item pistol(int which, float strength);

制造问题的函数是 pistol .它看起来像

Item pistol(int which, float strength) {
    Interval i = Interval(0, 1);
    Domain d = Domain(i);
    Character c = Character({d}, {1});
    return Item(c);
}

当我尝试将代码与我的主程序链接时,所有引用 Domain.hCharacter.h 中的对象的调用都undefined references,这意味着我会收到链接时间错误,例如:

undefined reference to `Character::show()'
...
undefined reference to `Interval::Interval(float, float)'
...

这些错误位于代码中不在 pistol 函数内的位置。

当我将此功能移动到我的主程序时,一切都按预期工作:

#include "Domain.h"
#include "Character.h"
#include "Item.h"
Item pistol(int which, float strength) {
    // definition, see above
}
int main() {
    Item w2 = pistol(2, 0.5);
    return 0;
}

该功能在Item.h/Item.cxx中有什么问题?我需要做什么才能把它放在他们的?

undefined reference链接阶段错误。

您很可能错过了与编译单元的链接,错过了重新编译依赖编译单元,或者尝试让编译器从使用它的所有编译单元中看不到模板类/函数定义!