【发布时间】:2014-08-06 21:15:01
【问题描述】:
大家好,前几天我问了一个关于我无法开始工作的 c++ 代码的问题。我听取了大家关于如何在 C++ 中创建对象的建议,但现在我得到了未定义的引用错误。我正在使用最新的代码块版本并使用它来编译。我已经读过这是由于在编译期间没有链接某些文件引起的,这意味着我已经在头文件中定义了类,但没有在代码中定义,这让我感到困惑,因为根据我的理解(教授示例)我正在声明对象。
头文件 MathObject.h
class MathObject{
private:
int num1;
int num2;
public:
int sum();
MathObject(int n, int m);
};
MathObject 文件 数学对象.cpp
#include <iostream>
#include "MathObject.h"
using namespace std;
MathObject :: MathObject(int n, int m){
num1 = n;
num2 = m;
}
int MathObject :: sum(){
return num1+num2;
}
主文件
#include <iostream>
#include "MathObject.h"
using namespace std;
int main(int args, char *argv[]){
MathObject *mo = new MathObject(3,4);
int sum = mo -> sum();
MathObject mo2(3,4);
//cout << sum << endl;
return 0;
}
未定义的引用适用于对 MathObject 类中任何内容的所有调用,我一直在寻找一个我能理解的小型 c++ 示例。 (语法和java很不一样)
当我尝试在 c 中使用多个文件时会发生这种情况,这可能是我的计算机的问题吗?
【问题讨论】:
-
将
MathObject.cpp添加到您正在编译的文件中 -
你是如何构建这个项目的?从命令行?
-
@DrewDormann 和编译器内置的代码块 ide
-
@RedAlert,你的意思是包含语句吗?我以为你只需要包含头文件。
-
包含语句可能会解决此问题,但这不是您想要解决的方式。您需要将这两个源文件编译为项目的一部分,而不仅仅是
main.cpp
标签: c++ codeblocks linker-errors undefined-reference