C++编译器问题 (?):无法将参数传递给单独类文件中的函数

C++ compiler issue (?): can't pass arguments to functions in separate class files

本文关键字:单独类 参数传递 文件 函数 问题 编译器 C++      更新时间:2023-10-16

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

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

Main: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 to MyClass::add(int,int('中collect2:错误:ld返回1退出状态

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

非常感谢您的帮助-谢谢!

您需要编译两个文件

g++ main.cpp myclass.cpp

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