0

可能重复:
什么是未定义的引用/未解决的外部符号错误,我该如何解决?

我最近开始在 C++ 中开发一个解释器,但我很恼火,无论我尝试什么,向量或数组都无法传递给外部类方法,所以我删除了我所做的所有工作。事实证明,我什至不能将int传递给另一个类。在求助于 C 或 Java 之前,我决定再给 C++ 一次机会,但编译器仍然不能像我预期的那样工作。也许我忘记了关于 C++ 的一些简单的东西,因为我有一段时间没有使用它了,但这似乎很简单。我的问题是:当它们没有在同一个文件中定义时,我不能将参数传递给其他类中的方法。这是我正在尝试做的事情:

主要:main.cpp

#include "myclass.h"

int main() {
    MyClass test;
    int n = test.add(25, 30);
    return n;
}

头文件:myclass.h

class MyClass {
public:
    int add(int a, int b);
};

类实现:myclass.cpp

#include "myclass.h"

int MyClass::add(int a, int b) {
    return a + b;
}

g++ main.cpp用产量编译它

/tmp/ccAZr6EY.o:在函数main': main.cpp:(.text+0x1a): undefined reference toMyClass::add(int, int)' collect2:错误:ld 返回 1 退出状态

我到底做错了什么?此外,即使我的函数没有参数化,编译器也会因为同样的事情对我大喊大叫,所以它一定是标题的问题。

非常感谢任何帮助 - 谢谢!

4

1 回答 1

2

您需要编译这两个文件

g++ main.cpp myclass.cpp

如果您只编译 main.cpp,编译器会MyClass::add在您的头文件中找到声明,但链接器稍后找不到MyClass::add要跳转到的实现。

于 2013-01-19T16:13:35.007 回答