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

时间:2013-01-19 16:12:04

标签: c++ arguments

  

可能重复:
  What is an undefined reference/unresolved external symbol error and how do I fix it?

我最近开始使用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 to MyClass :: add(int,int)'中   collect2:错误:ld返回1退出状态

我到底做错了什么?此外,即使我的函数没有参数化,编译器也会对我大吼大叫,因此它必须是标题的问题。

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

1 个答案:

答案 0 :(得分:2)

您需要编译这两个文件

g++ main.cpp myclass.cpp

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