gpt4 book ai didi

c++ - 主程序中的函数正常,否则 undefined reference

转载 作者:太空宇宙 更新时间:2023-11-04 11:39:50 26 4
gpt4 key购买 nike

我有一个函数,当在我的程序的主文件中定义时,它可以按我希望的方式工作,并在头文件中定义时产生大量 undefined reference 。

这个头文件存在:

#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 reference ,这意味着我会遇到链接时间错误,例如:

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 是一个链接阶段错误。

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

关于c++ - 主程序中的函数正常,否则 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21791923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com