我班上的每一个功能都给了我这个错误。我将把我的3参数构造函数作为示例:
#include <iostream>
using namespace std;
class Mixed{
public:
Mixed(int i, int n, int d);
private:
int integer, numerator, denominator;
};
和我的cpp:
#include "mixed.h"
#include <iostream>
#include <iomanip>
using namespace std;
Mixed::Mixed(int i, int n, int d){
int valid;
int negatives = 0;
if (d == 0){
valid = 0;
}
if (d < 0 | n < 0 | i < 0 && valid != 0){ //if there are any negatives and it hasn't been made invalid
if (i < 0){ //start counting negatives
negatives++;
}
if (n < 0){
negatives++;
}
if (d < 0){
negatives++;
}
if (negatives > 1){ //invalid if more than one negative value
valid = 0;
}
else {
valid = 1;
}
if (i != 0 && valid != 0){ //check for order if it hasn't already been made invalid
if (n < 0 | d < 0){ //invalid if integer is non zero, but one of the others is negative
valid = 0;
}
}
else if (n != 0 && d < 0){ //invalid if integer is zero, numerator is nonzero, and denominator is negative
valid = 0;
}
else if (valid != 0){ //if it hasn't already been invalidated, it's valid
valid = 1;
}
}
if (valid == 0){
this -> integer = 0;
this -> numerator = 0;
this -> denominator = 0;
}
else{
this -> integer = i;
this -> numerator = n;
this -> denominator = d;
}
}
我的类正在使用的main.cpp包含
#include <iostream>
#include "mixed.h"
using namespace std;
我的错误如下:
/tmp/ccbdj59O.o:在函数main': main.cpp:(.text+0x34): undefined reference to
Mixed :: Mixed(int,int,int)&#39;
我的智慧结束了,感觉这是一个明显的错误。思考?
答案 0 :(得分:1)
您想要编译两个 cpp文件并将它们链接在一起。
这可以使用g ++和命令
来完成g++ mixed.cpp main.cpp -o output_file
这会编译两个文件并将它们链接在一起。您也可以单独执行此操作:
g++ -c mixed.cpp -o mixed.o
g++ -c main.cpp -o main.o
g++ main.o mixed.o -o output_file
如果您不知道如何使用命令行,请查看this教程,如果您正在使用Linux(我想您是基于您遇到链接器错误并因此使用g ++的事实) 。在Windows上,您可能希望使用IDE,查看here以获取建议。
查看您的评论,您正在使用Sublime Text来构建文件,也许可以尝试打开您的工作文件夹(文件&gt;打开文件夹...)而不是单个文件。无论如何,我认为最好知道幕后发生的事情。