C++ 编译器问题 (?) : can't pass arguments to functions in separate class files

标签 c++ arguments

<分区>

Possible Duplicate:
What is an undefined reference/unresolved external symbol error and how do I fix it?

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

主程序:main.cpp

#include "myclass.h"

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

header :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: In function main': main.cpp:(.text+0x1a): undefined reference toMyClass::add(int, int)' collect2: error: ld returned 1 exit status

我到底做错了什么?另外,即使我的函数没有参数化,编译器也会对我大喊大叫,所以这一定是头文件有问题。

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

最佳答案

你需要编译这两个文件

g++ main.cpp myclass.cpp

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

关于C++ 编译器问题 (?) : can't pass arguments to functions in separate class files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14416195/

相关文章:

c++ - 如何在 C++ 中实现带中断的定时器?

perl - 使用 SSH,从另一个 perl 文件远程执行 perl 文件并传递包含空格的参数的最佳方法是什么?

java - Libgdx - 在函数中使用 void 作为参数

c++ - OpenMP:如何在每个线程中使用递归函数?

C++ 快速排序段错误

c++ - 如何将两位添加到十六进制

c++ - libzip : what is the first argument? 中的 zip_source_zip

c++ - 是否可以从指针的多态容器返回 'accurate' 对象?

c - execvp 因多个参数或没有参数而失败

scala - 在默认值中引用 Scala 构造函数参数